协议设计

协议的问题

现有协议

功能 上位机到下位机 下位机到上位机(新)
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次)

上位机和下位机通讯问题

  • 上位机向下位机发送数据不能过快
  • 下位机不能确保数据的正确性
  • 上位机中途接收数据容易错开
  • 下位机向上位机发送数据不能过快
  • 上位机不能确保数据的正确性
  • 下位机中途接收数据容易错开
  • 两者通讯过程中浪费了有效的数据资源

解决思路

将协议修改健壮。

数据格式规范化

  • 通过消息头来规范数据
  • 通过消息指令来确定消息类型

不等长数据

  • 通过消息长度来规范数据长度

数据有效校验

  • 通过校验码来确定数据有效性

可扩展性

  • 数据位来增强扩展性