¿Manteniendo la integridad de los paquetes de datos a través del puerto serie RS-232?

0

Esto puede parecer un poco simple, pero cuando estoy leyendo los datos enviados a través de RS-232 para que sean leídos por mi computadora, es razonable esperar que si los datos se enviaron como un solo paquete, ese paquete ¿Estar completo cuando voy a leerlo?

Por ejemplo, si envío un paquete de datos de 32 bytes a través del puerto serie, y esto llega al búfer serie en mi computadora, ¿puedo asumir con seguridad que los datos llegan simultáneamente? Siento que, incluso si los datos se enviaron como un paquete, existe la posibilidad de que solo la mitad de los datos estén en el búfer de mi computadora antes de leerlos. Como los paquetes tienen un cierto "ancho" de datos, me imagino que podría crear una especie de condición de carrera donde el resto del paquete tiene que llegar antes de que termine de leer el búfer. Especialmente si la idea de "paquete" se interpreta de manera más general, significa múltiples piezas de datos separados que se envían poco después una de la otra (en breve será algo así como hacer un bucle a través de los datos para enviar y llamar el método de escritura en serie en él) secuencialmente), a diferencia de una estructura de datos de 32 bytes que contendría los datos.

Gracias de antemano por cualquier ayuda que pueda proporcionar.

    
pregunta Scorch

1 respuesta

3

Los datos no están empaquetados en el cable (a menos que esté usando USB-serie), por lo que no hay absolutamente ninguna garantía de que los datos permanezcan juntos de una manera particular.

Si "agota" la entrada y espera a que se detengan los bytes entrantes, puede estar bastante seguro de que tiene todo lo que se envió y puede trabajar hacia atrás desde el final. A menos que uno de los bytes en el medio se haya perdido o corrompido.

La mayoría de los protocolos sensibles utilizan "marcadores" para indicar el inicio o el final de los datos. Esta es la razón por la que la mayoría de los protocolos seriales se parecen al texto ASCII que termina las líneas con CR / LF.

    
respondido por el pjc50

Lea otras preguntas en las etiquetas