
El valor del carácter ascii "NUL" es 0. ¿Es posible enviar este carácter a través de una línea serie sin que se interprete como si no se enviaran datos?
Respuesta1
Sí, claro. El encuadre de los personajes está separado de su contenido. No hay ninguna razón para que ocho bits de cero se interpreten inherentemente como "no se envían datos", como tampoco lo sería un sector de disco lleno de ceros.
Para elaborar: en una serie asíncrona típica, tiene un bit de inicio, luego ocho bits de datos y luego un bit de parada. Todavía tendrías los ocho bits de datos; resultarían que serían todos ceros. Los bits de inicio y parada le dicen al receptor "aquí hay un personaje". Cuáles son las partes del personaje son irrelevantes.
Si un programa receptor interpreta el NUL como "sin datos", eso es asunto suyo, pero es un problema de la capa de aplicación.
Por ejemplo, si el programa receptor es un emulador de terminal, probablemente no hará nada cuando reciba un NUL (porque eso es lo que hacían la mayoría de los terminales reales). La API del puerto serie aún habrá registrado la recepción del carácter NUL y lo habrá entregado al programa. Es el emulador de terminal el que decidió "oh, simplemente ignoraré eso".
Hay una gran cantidad de aplicaciones para enviar datos "binarios" a través de líneas seriales asíncronas que habrían fallado si no se hubieran enviado o recibido NUL.
Para obtener más información, consultehttps://en.wikipedia.org/wiki/Asynchronous_serial_communication
Respuesta2
El protocolo serie tiene bits de inicio y parada, y los datos están delimitados dentro de ellos: N81 (sin paridad, 8 bits, 1 bit de parada le permitirá enviar cualquier carácter ASCII y es 1 codificación común), por lo tanto, al enviar un bit de inicio o Al no enviar un bit de inicio, es posible diferenciar entre nada y nulo.