Estoy desarrollando un protocolo UART basado en codificación ASCII. La comunicación es entre una PC y una placa STM32. El formato del paquete es así: Paquete: {STX,DATA,ETX} Donde están STX y ETX 0x02
y Ox03
en ASCII.
Ejemplo:
STX HELLO ETX en hexadecimal sería: 0x02 0x48 0x45 0x4c 0x4c 0x4f 0x03
Mi pregunta es ¿dónde está exactamente la posición del \0
carácter en mi paquete? ¿Es después de ETX así: STX HELLO ETX \0 o después de HELLO así: STX HELLO\0 ETX ?
Usted especifica su formato de paquete como {STX,DATA,ETX}.
Todo el contenido de DATOS del paquete se encuentra dentro del campo de DATOS, entre STX y ETX.
Si decide enviar cadenas terminadas en NUL en sus paquetes, NUL es parte de la cadena, parte de su campo de DATOS.
Entonces enviarías: STX HELLO\0 ETX
depende de los DATOS (la palabra 'HOLA' en su ejemplo):
--si es una cadena terminada en nulo (una cadena C), en la que una cadena está representada por una matriz de caracteres terminados por un carácter nulo '\0',
o:
--si es una matriz 'normal' de caracteres.
entonces el paquete puede ser:
-- STX HELLO\0 ETX para la matriz de caracteres terminada en cero: [ 0x02 0x48 0x45 0x4c 0x4c 0x4f 0x00 0x03 ]
o:
-- STX HELLO ETX para la matriz de caracteres normal: [ 0x02 0x48 0x45 0x4c 0x4c 0x4f 0x03 ]
o:
--¡el carácter nulo puede estar en cualquier parte del paquete!... es su protocolo, como comentó colin-s;
colin
\0
si terminas siempre conETX
?chris stratton