Теперь вы можете легко получить доступ к полученным данным по байтам за один раз с минимальными потерями производительности.

аюсь прочитать полные сообщения от моего GPS через последовательный порт.

Сообщение, которое я ищу, начинается с:

0xB5 0x62 0x02 0x13

Так я читаю с последовательного порта вот так

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.
     }

}

Проблема в том, что мне нужно получить полное сообщение. Половина сообщения может находиться в буфере за одну итерацию. А вторая половина может прийти в сообщение на следующей итерации.

Кто-то предложил освободить буфер от полного сообщения. И затем я перемещаю оставшиеся данные в буфере в начало буфера.

Как мне сделать это или каким-либо другим способом, чтобы убедиться, что я получаю каждое полное выбранное сообщение, которое приходит?

редактировать//

Я хочу определенный класс и ID. Но я также могу прочитать в длину

Ответы на вопрос(2)

Ваш ответ на вопрос