首页 > 解决方案 > 解析不同长度的串行消息

问题描述

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

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

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

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

字节 2:固定标头符号 0xFF

字节 3:数据字数

字节 4:消息 ID

字节 5:标头校验和

然后在此之后,我们收到数据字节。问题是数据字节的数量可能不同,但是这些字节的数量在消息的标题中提到,它是第三个字节。我怎样才能编写一个高效的解析器,它应该能够:

  1. 在变量中分别收集消息头的第 3、4 和 5 个字节
  2. 然后根据数据计数,即报文头字节3,轮询串口,直到收到那么多字节
  3. 收到所有字节后,即收到完整消息时,应表示COMPLETION(可能只是表示一个标志)

标签: cparsingserial-port

解决方案


推荐阅读