URGENTE: Ayuda con puerto serie

Buenos días,
Agradecería un poco de ayuda pues no encuentro la razón por la
cual cuando ejecuto un programa que he hecho para leer el puerto
serie funciona cuando lo ejecuto paso a paso y deja de funcionar
cuando lo ejecuto directamente.
El caso es que realizo un sondeo del puerto serie cuando recibo
el evento comEvReceive hasta que encuentro un carácter final.
Me explico, resulta que en el mejor de los casos cuando leo el buffer
el código de barras lo tengo que leer en varias veces, aunque
le haya dicho que el buffer es de 1024 bytes y el código de barras es
de solo 14 dígitos. Lo peor de todo es que a veces se me pierden
caracteres.
Sabes, no entiendo por que cuando ejecuto paso a paso, leo todo el
código de un tirón, mientras que si lo hago directamente pierdo caracteres.
Gracias y saludos.
JuanMa
Respuesta
1
Lo dudo. Las API son llamadas bastantes complejas y, normalmente, todo lo que se puede hacer con ellas se puede hacer con otro control o referencia.
Prueba a poner un Debug. Print en el evento OnComm para leer los eventos producidos y la entrada de datos del buffer. En la ventana de inmediato tendrás el resultado y podrás ver que es lo que va entrando en el evento. Tal vez te de alguna idea.
Normalmente lo de perder información cuando ejecutas la aplicación es porque va infinitamente más rapido que el puerto serie, de tal manera que la lectura del contenido del buffer de datos se hace antes de que el puerto haya podido comunicar la totalidad de los mismos.
Si tienes un carácter final de transmisión, por un buffer con un DoEvents hasta que localices dicho carácter:
Static Datos As String
Dim Buffer As String
Do
Buffer = Comm1.Input
Datos = Datos & Buffer
Buffer = Empty
DoEvents
Loop Until Instr(Datos, "?")<> 0
Prueba a ver si te sirve esto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas