Bien, ya he arreglado a medias el problema. Ahora tengo este:
He modificado el codigo de la aplicacion, en concreto he añadido MSComm1.Settings = "9600,N,8,1" al entrar en el evento. Con esto recibo datos, peeeeeero, me muestra por pantalla caracteres extraños. He investigado, y con el codigo que tengo los caracteres extraños corresponden a lo que deberian ser numeros, no teniedo ningun problemas con las letras (en este caso aA, Bc.......) No entiendo el pq de esta pega con el convertidor usb serie, pues con el normal va muy bien, pero bueno, es lo que hay.
Pq me pasa esto con los numeros si la variable "lectura" es string??
Os pego el codigo completo.
Option Explicit
Private buffer As String
Private canal As String
Private lectura As String
Private Sub cmdCal_Click()
frmCalibracion.Show vbModal
End Sub
Private Sub cmdMed_Click()
frmMedicion.Show vbModal
End Sub
Private Sub Form_Load() "Configura el puerto en cuanto se ejecuta el programa
MSComm1.CommPort = 3 "puerto com3
MSComm1.Settings = "9600,N,8,1" "Velocidad, paridad...
MSComm1.PortOpen = True "Abre el puerto
MSComm1.InputLen = 0 "es la cantidad de caracteres que va a leer cada vez que se hace un Input, si se 5 te va a leer 5, si hay 20 no te va a vaciar el buffer, te va a dejar 15 en espera. Con 0 le decís que lea TODO el buffer y que lo vacíe completamente en cada lectura.
MSComm1.RThreshold = 1 "Ejecuta el evento OnComm cada un caracter ASCII "13" (retorno de carro)
End Sub
Private Sub MSComm1_OnComm() "Se genera el evento
MSComm1.Settings = "9600,N,8,1"
If MSComm1.InputLen > 12 Then "Si el buffer tenía más de 8 caracteres que lo descarte y vacíe el buffer. SOLO EN EL CASO QUE SE SEPA QUE LOS DATOS DEL PIC NO SUPERAN ESTA CANTIDAD. se puede especificar otro valor distinto a 8 o ignorar toda la condición.
MSComm1.PortOpen = False
MSComm1.PortOpen = True
Exit Sub
End If
buffer = MSComm1.Input
If buffer = " " Then Exit Sub
canal = Left$(buffer, 2)
lectura = Mid$(buffer, 3, 12)
Select Case canal
Case "aA"
frmCalibracion.LblPot1.Caption = " " & canal
Case "aB"
frmCalibracion.LblPot2.Caption = " " & lectura
Case "aC"
frmCalibracion.LblPot3.Caption = "" & canal
Case "bA"
frmMedicion.LblPot1.Caption = "" & lectura
Case "bB"
frmMedicion.LblPot2.Caption = "" & canal
Case "bC"
frmMedicion.LblPot3.Caption = "" & lectura
Case "cA"
frmMedicion.LblPot4.Caption = "" & canal
Case "cB"
frmMedicion.LblPot5.Caption = "" & canal
Case "cC"
frmMedicion.LblPot6.Caption = "" & canal
End Select
End Sub
Private Sub cmdFinalizar_Click()
Hide
End
End Sub
Bien, en el case donde pone canal me señala perfectamente aA, etc, el problema, como ya comento, es con los numeros.
Espero vuestra ayuda
Gracias
Un saludo
EDITADO:
No lo he dicho, pero el pic me envia lo siguiente:
printf ("%c%c%1.2f V
",modo, canal, tensionm); (esto en lenguaje ccs)
puede ser ese el problema? q envie los numeros como floats?