Hola a todos, problema con la recepción de datos en puerto serie con VB 6

Tengo conectado un "Arduino Uno" al ordenador. Este manda un número (Long) cada cierto tiempo al buffer del puerto, concretamente valores entre 3.000 y 20.

En Visual Basic recibo los números y los gestiono posteriormente.

El problema que tengo es que a veces al enviar el Arduino un número, el VB lo toma de dos veces, esto es, si manda 328 por ejemplo, se leen como 2 entradas que pueden ser 32 y 8 con lo que ya no es un valor de 328 sino dos valores de 32 y 8.

La mayoría de las lecturas las hace bien pero le ocurre esto cada ciertos números que manda.

La placa manda bien los datos porque si leo esos mismos datos con el Monitor de texto que trae el programa Arduino no falla ningún valor. Solo me ocurre al leer los datos con el VB.

En VB utilizo mscomm. Input para leer esos datos. Los leo con una variable String y a través de val(dato) la convierto en un número.

No se si será suficiente la explicación que he dado para intentar hallar el problema.

2 Respuestas

Respuesta

Me pasa lo mismo, ¿pudiste solucionarlo? Yo hice algo como:

ini:
entrada_usb = frmini.serie.Input 
If Len(entrada_usb) <> 5 Then
GoTo ini
End If

Si el dato leído no es de 5 caracteres lo vuelve a leer pero no se porque el vb por ratos ignora esto y me lee datos de 3 y 4 caracteres.

Hola, no he podido solucionarlo, sigue mandando erróneamente los datos.

Yo lo solucione así:

ini:

frmini.serie.InputLen = 0

entrada_usb = frmini.serie.Input 
If Len(entrada_usb) <> 7 Then
GoTo ini
End If

agregando frmini.serie.InputLen = 0 se solucono pero si deseo obtener un numero de 5 bits debo considerarlo como de len(7) no se porque, segun el codigo que tengo recivo datos de tipo 00000, so le pongo 5 en ves de 7 me da 000.

Respuesta

Enviar los datos como mensaje de texto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas