analizar mensajes completos desde el puerto serie
Estoy tratando de leer mensajes completos de mi GPS a través del puerto serie.
El mensaje que estoy buscando comienza con:
0xB5 0x62 0x02 0x13
Así que leí desde el puerto serie así
while (running !=0)
{
int n = read (fd, input_buffer, sizeof input_buffer);
for (int i=0; i<BUFFER_SIZE; i++)
{
if (input_buffer[i]==0xB5 && input_buffer[i+1]== 0x62 && input_buffer[i+2]== 0x02 && input_buffer[i+3]== 0x13 && i<(BUFFER_SIZE-1) )
{
// process the message.
}
}
El problema que tengo es que necesito recibir un mensaje completo. La mitad de un mensaje podría estar en el búfer una iteración. Y la otra mitad podría entrar en el mensaje la próxima iteración.
Alguien sugirió que libere el búfer del mensaje completo. Y luego muevo el resto de los datos en el búfer al comienzo del búfer.
¿Cómo hago eso o cualquier otra forma que me asegure de recibir cada mensaje seleccionado completo que viene?
Quiero una clase e identificación en particular. Pero también puedo leer a lo largo