协议设计
协议的问题¶
现有协议¶
功能 | 上位机到下位机 | 下位机到上位机(新) |
---|---|---|
LED | 0x01 + 0x01(开),0x02(关),0x03(切换) | 0x01 + 0x01(开),0x02(关) + 0x00(补位) |
蜂鸣器 | 0x02 + 0x01(开),0x02(关),0x03(切换) | 0x02 + 0x01(开),0x02(关) + 0x00(补位) |
电机 | 0x03 + 0xb8 0x0b(pwm值) | |
OLED | 0x04 + 0x69 0x74 0x63 0x61 0x73 0x74(显示的内容) | |
编码器 | 无 | 0x03 + 0xee 0x11(每秒2次) |
上位机和下位机通讯问题¶
- 上位机向下位机发送数据不能过快
- 下位机不能确保数据的正确性
- 上位机中途接收数据容易错开
- 下位机向上位机发送数据不能过快
- 上位机不能确保数据的正确性
- 下位机中途接收数据容易错开
- 两者通讯过程中浪费了有效的数据资源
解决思路¶
将协议修改健壮。
数据格式规范化¶
- 通过消息头来规范数据
- 通过消息指令来确定消息类型
不等长数据¶
- 通过消息长度来规范数据长度
数据有效校验¶
- 通过校验码来确定数据有效性
可扩展性¶
- 数据位来增强扩展性