carácter NUL en un protocolo basado en ASCII sobre UART

1

Estoy desarrollando un protocolo UART basado en la 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 STX y ETX son 0x02 y Ox03 en ASCII.
Ejemplo:

STX HELLO ETX en Hex sería: 0x02 0x48 0x45 0x4c 0x4c 0x4f 0x03

Mi pregunta es ¿dónde está exactamente la posición del carácter %code% en mi paquete? es después de ETX así: STX HELLO ETX \ 0 o después de HOLA como esto: STX HELLO \ 0 ETX ?

    
pregunta Pryda

2 respuestas

7

Usted especifica el formato de su paquete como {STX, DATA, ETX}.

Todo el contenido de DATOS del paquete está contenido dentro del campo DATOS, entre el STX y el ETX.

Si decide enviar cadenas terminadas en NUL en sus paquetes, entonces el NUL es parte de la cadena - parte de su campo de DATOS.

Así que enviarías: STX HELLO\0ETX

    
respondido por el TonyM
1

depende de los DATOS (la palabra 'HOLA' en tu ejemplo):

- si es una cadena terminada en nulo (una cadena C), en la cual una cadena está representada por una matriz de caracteres terminados por un carácter nulo '\ 0',

o:

- si es una matriz de caracteres 'normal'.

para que el paquete pueda ser:

- STX HELLO \ 0 ETX para la matriz de caracteres terminada en nulo: [ 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;

    
respondido por el moyoumos

Lea otras preguntas en las etiquetas