Skip to content

Latest commit

 

History

History
17 lines (14 loc) · 1.69 KB

README.md

File metadata and controls

17 lines (14 loc) · 1.69 KB

通信帧结构

帧头2byte 帧长度2byte 通信类型2byte 端口1byte 帧载荷n byte 校验和1byte 帧尾2byte
0x6B66 0x1E 结构体内容 0x7B70

如图所示,通信帧结构包括帧头子域、帧长度子域、端口子域、通信类型子域、帧载荷子域、校验和子域以及帧尾子域。其中,数据载荷子域的字节数n是根据不同的数据帧结构变化的。 注:

  1. 解析及封装均为二进制格式。
  2. 所有信息传输时,低字节在前,高字节在后(大端格式)。
  3. 帧长度子域值为除帧头、帧尾外实际数据帧长度。
  4. 校验和:从帧头0x6B66开始累加到校验和子域之前,包括帧头字节,(数据校验是对原始数据校验,非转义数据)。
  5. 端口:0x1E。
  6. 数据帧中帧头字节处理方法:特征字定义为:0x6B、0x99、0x7B。(这里的数据帧指帧中除去帧头帧尾的区域) 组包:数据帧中出现0x6B时,将其替换为0x99 0x94(0x6B的取反);数据帧中出现0x99时,替换为0x99 0x66;数据帧中出现0x7B时,替换为0x99 0x84。上述情况下,帧长度子域、帧序号、端口子域、数据载荷、校验和中出现特征字时,需要替换。 解包:首先查找帧头;其次,找到帧头后,分析数据帧中如果出现0x99,分析后面一个字节的数据如果不是0x94、0x66或者0x84中任何一个时,该帧出错,可以丢弃;如果是上述三个字节中的一个,就可以准确恢复,直到找到帧尾0x6A69结束,并完成和校验;最后,校验帧长度。如果均正确,则可以得到该正确的数据帧。