825 字
4 分钟
电动牙刷BLE指令设计
大端在前,每条指令均为20字节,未使用的字节填充为0
0x01 设置牙刷命令
该命令用于设置牙刷的工作参数,包括使能状态、振动频率、振动幅度、扫动频率、扫动幅度等。其余字节补零。
| 字节位置 | 1 | 2 | 3 | 4 | 5 | 6~20 |
|---|---|---|---|---|---|---|
| 内容 | 使能 | 振动频率 | 振动幅度 | 扫动频率 | 扫动幅度 | 0 填充 |
0x02 刷牙状态服务
该命令用于上报电池电量、刷牙进度和固件版本号。
| 字节位置 | 1 | 2-3 | 4-7 | 8~20 |
|---|---|---|---|---|
| 内容 | 电池电量 | 刷牙进度(大端) | 版本号(大端) | 0 填充 |
0x03 RFID 标签数据
该命令用于上报刷头标签信息,包括唯一ID、生产日期、刷头类型、寿命及使用次数。
| 字节位置 | 1-8 | 9-10 | 11 | 12 | 13 | 14-15 | 16-17 | 18~20 |
|---|---|---|---|---|---|---|---|---|
| 内容 | 标签唯一ID | 年份(大端) | 月 | 日 | 刷头类型 | 寿命(大端) | 使用次数(大端) | 0 填充 |
0x04 同步历史数据服务 - 包1
历史数据同步包1用于传输时间戳、刷牙时长及刷头ID。
| 字节位置 | 1 | 2-5 | 6-7 | 8-15 | 16~20 |
|---|---|---|---|---|---|
| 内容 | 包头 | 时间戳(大端) | 时长(大端) | 刷头ID(大端) | 0 填充 |
0x04 同步历史数据服务 - 包2
历史数据同步包2用于传输刷牙位置等刷牙数据。
| 字节位置 | 1 | 2-19 | 20 |
|---|---|---|---|
| 内容 | 包头 | 刷牙数据 | 空 |
0x07 刷牙状态数据
刷牙状态数据用于传输刷牙状态信息及剩余时间。
| 字节位置 | 1-18 | 19 | 20 |
|---|---|---|---|
| 内容 | 状态数据 | 剩余时间 | 空 |
0x08 刷牙模式设置
刷牙模式设置共5个包,每个包包含分片索引、刷头ID和部分模式数据(每包截取20字节)。
| 字节位置 | 1 | 2-9 | 10-20 |
|---|---|---|---|
| 内容 | 分片索引 | 刷头ID(大端) | 模式数据部分 |
0x09 UTC 时间同步
用于同步 UTC 时间,4 字节时间戳 + 填充。
| 字节位置 | 1-4 | 5-20 |
|---|---|---|
| 内容 | UTC 时间(大端) | 0 填充 |
0x0A 图片传输服务 - 信息包
该命令用于传输图片的基本信息,包括图片尺寸、总包数及图片格式等。
| 字节位置 | 1 | 2-3 | 4-5 | 6-7 | 8 | 9-16 | 17 | 18-19 | 20 |
|---|---|---|---|---|---|---|---|---|---|
| 内容 | 包头 | 图片宽度(大端) | 图片高度(大端) | 总包数(大端) | 图片格式 | 标签唯一ID(8字节) | 位置 | 保留 | 保留 |
- 包头:0x00 表示信息包
- 图片宽度、高度:2字节大端
- 总包数:2字节大端
- 图片格式:1字节(如 0x01=RGB565)
- 其余字节补零或保留
0x0A 图片传输服务 - 数据包
该命令用于分包传输图片数据,每包最多携带18字节图片数据。
| 字节位置 | 1 | 2-19 | 20 |
|---|---|---|---|
| 内容 | 包序号 | 图片数据 | 填充 |
-
包序号:1字节,表示当前数据包的序号(从1开始递增)
若超出则从1循坏开始(packetnumber)%255 + 1
-
图片数据:最多18字节,若不足18字节则后续字节补0
-
填充:1字节,若图片数据已满18字节则为0,否则用于补齐20字节长度
每个数据包的格式为:命令字节(0x0A)+ 包序号 + 图片数据(18字节)+ 填充(不足时补0),共20字节。
0x0B 同步RFID名称附加信息
该命令用于上报刷头标签信息及名称
| 字节位置 | 1-8 | 9 | 10 ~20 |
|---|---|---|---|
| 内容 | 标签唯一ID | 位置数据1、2、3 | 字符串 |