对于串口,我们知道不管是RS232还是RS485、RS422这些典型的串口标准通讯协议,只是定义了部分物理层,对于数据链路层等基本没有涉及,这也就体现了串口协议的灵活性,没有统一的标准,需要使用者自己来定义合适的数据协议来传输自己的数据。
串口通讯的数据格式为:起始位(1bit)、数据位(7bit)、奇偶校验位(1bit)、停止位(1bit)。
如图:
![2ed4a7f6-db15-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/2ed4a7f6-db15-eb11-8da9-e4434bdf6706.png)
数据格式
对于这个协议其实略显的简单了一点,具体体现在:
- 校验位的能力太差。
- 不能区分数据的类型。
- 不能确定设备的地址。
- 发送成功与否没有标识位。
- 无法定位错误的数据等等。
对于此,我们特意给出一种比较常用的简单的数据帧形式。
1.帧起始
一般大家喜欢用0x55或者0xaa作为帧的起始位。我习惯用0x3C即"
2.命令域
主要要包含这几类数据,如:上行为0x10,下行为0x30,重新传输为0x50,应答为0x70。
3.地址域
假如地址域用一个字节表示,基地址为0x20,每一个从节点的偏移地址为上一个从节点的偏移地址加