串行口通信以RS-232标准为基础,数据格式固定为18N1,即1位起始位,8位数据,无校验,1位停止位。
数据包格式:
0 | 1 | 2 | 3 | 4 | 5 | 6-7 | 8- |
|
|
0x7E | 协议版本 | 属性 | 目的地址 | 源地址 | 命令字 | 长度 | 数据 | 累加和 | 0x7E |
1、数据包以0x7E开始,以ox7E结束。
2、协议版本:
1字节,组合BCD码,如0x43,表示版本为4.3。为将来协议升级或变更做准备。
3、属性:
1字节,位定义:
D7:发送命令字时为0,发送确认码时为1
D6-D0:可作为包序号,其他自定义说明数据包属性的内容
4、目的地址:1字节,接收方地址。范围1-253,默认为253,255作为广播地址
5、源地址:1字节,发送方地址。默认为254。
6、命令字:说明数据包的用途。
7、长度:两字节,表示后面的数据的字节数。
8、数据:在不同命令字下,含义不同,也可以根据情况添加自定义字段。
9、累加和:2字节无符号整数,从协议版本号开始所有字段的按字节无符号代数和。
注:数据包内的0x7E以0x7F、0x00两个字符代替,0x7F以0x7F、0xFF两个字符代替;
任何一个数据包都必须返回确认包,包中的确认码指示数据接收的结果,定义如下:
确认码 | 含义 |
0 | 正确 |
1 | 参数错误 |
2 | 无效命令字 |
3 | 无效属性 |
4 | 累加和错误 |
5 | 包长度错误 |
6 | 超时错误 |
7 |
|
8 |
|
确认包的格式如下:
7EH | 协议版本 | 属性 | 目的地址 | 源地址 | 命令字 | 长度 | 确认码 | 选项 | 累加和 | 7EH |