简述
通信协议是软件的重要组成部分,是系统中软件交互信息的桥梁和标准。
我接触过的通信协议主要用于三种场合,对应三种形式的数据形式:
1)上位机和下位机各模块之间
这种场合下通常是通过串口或网口传输状态、控制、数据信息,通信协议复杂而紧密。
通常一个字节甚至一个bit位就表征了一个完整信息,需要报头、报尾、CRC、时间戳等组成。
这类通信协议通常通过整型约定系数的方式表征浮点数,编写结构体时需要严格区分unsigned和signed类型,还要注意字节对齐问题。
Modbus-Profibus、Can总线等行业标准也采用的这种形式。
2)互联网Web传输
通常采用HTTP短报文的方式传输数据。
数据通常采用Json格式,格式非常清楚而明了。
3)局域网内或自环通信
通常采用TCP/UDP的方式进行传输,协议定义可以采用信息头+分割符的方式,非常灵活而多变。
模板
1)上位机和下位机通信协议模板
字序号 | 名称 | 字节 | 数据 | 备注 |
---|---|---|---|---|
0–1 | 头 | 2 | 0x44AA | |
2–2 | 识别码 | 1 | 0x5E | |
xx | xx | xxx | xx | xx |
75–76 | 年 | 2 | ||
77–77 |