解析长度可变的串行消息

时间:2018-09-27 11:23:10

标签: c parsing serial-port

我并没有将其委托给任何人,只是想为我正在研究的消息协议实现解析器提供一些想法/帮助。我有一条消息是通过串行com端口发送的,因此基本上只是一个简单的字节集合。

+--------------------------------------------------------------+ 
| MSG HEADER (5 Bytes) | ----- DATA BYTES (varied count) ----- |
+--------------------------------------------------------------+

此消息的标头具有固定的开头五个字节,表示:

  

字节1:固定的标头符号0x81

     

字节2:固定的标题符号0xFF

     

字节3:数据字数

     

字节4:消息ID

     

字节5:标头校验和

然后在此之后,我们收到数据字节。问题是数据字节的计数可以变化,但是这些字节的计数在消息的 header 中是第三个字节。如何编写高效的解析器,该解析器应能够:

  1. 分别在变量中收集消息头的字节3、4和5
  2. 然后根据数据计数,即消息头字节3,它轮询串行端口,直到接收到这么多字节为止
  3. 收到所有字节后,即收到完整消息时,应表示COMPLETION(也许只是表示一个标志)

0 个答案:

没有答案