¿Mantiene la totalidad del paquete de datos a través del puerto serie RS-232?

Esto puede parecer un poco simple, pero cuando estoy leyendo datos enviados desde RS-232 para que los lea mi computadora, ¿es razonable esperar que si los datos se enviaron como un solo paquete, el paquete permanecerá completo cuando voy a leerlo?

Por ejemplo, si envío un paquete de datos de 32 bytes a través del puerto serie y llega al búfer serie de 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 ir a leerlos. Debido a que los paquetes tienen un cierto "ancho" de datos, me imagino que podría crear una especie de condición de carrera en la que el resto del paquete debe llegar antes de que termine de leer el búfer. Especialmente si la idea de "paquete" se interpreta de manera más flexible para significar múltiples piezas de datos separadas que se envían poco después de la otra (en breve, algo así como recorrer los datos para enviar y llamar al método de escritura en serie). secuencialmente),

Gracias de antemano por cualquier ayuda que pueda proporcionar.

Eso depende totalmente de la pila de recepción de su sistema operativo (si corresponde). Probablemente no debería confiar en él si es posible
Lea acerca de la suma de comprobación. Eso podría aplicarse a lo que está preguntando. Y todo depende de qué tan rápido y grande sea su búfer.

Respuestas (1)

Los datos no se empaquetan en el cable (a menos que esté utilizando un puerto serie USB), por lo que no hay absolutamente ninguna garantía de que los datos permanezcan juntos de alguna manera en particular.

Si "drena" la entrada y espera a que se detengan los bytes entrantes, entonces 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 dañado.

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 cual la mayoría de los protocolos en serie se ven como texto ASCII que termina las líneas con CR/LF.