我想通過串行端口從我的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。但我也可以讀長度爲
您可以在一個循環中一次讀取1個字節,直到您有完整的消息。 –
文件是否在信息結尾處關閉?什麼終止消息?一般的信息格式是什麼? – Galik
@Galik我添加了消息結構 – rielt12