# 数据包格式 ## 基础 | 含义 | 数据 | | ---- | ---- | | 发送包头 | 0x00 | | 发送包尾 | 0xff | | 返回包头 | 0x01 | | 返回包尾 | 0xfe | `数据包头` + `包体长度` + `指令` + `数据包体` + `数据包尾` 如: `00 06 20 AA BB FF` ## 信息查询 ### 查询蓝牙连接状态 `0x10` 查询示例 `00 04 10 FF` | 返回数据 | 含义 | | -------- | ---- | | 01 | 已连接 | | 00 | 未连接 | 返回示例 `01 05 10 01 FE` ### 查询 SPI Flash 挂载状态 `0x11` 查询示例 `00 04 11 FF` | 返回数据 | 含义 | | -------- | ---- | | 01 | 已挂载 | | 00 | 未挂载 | 返回示例 `01 05 11 01 FE` ### 查询超声波距离 `0x12` 查询示例 `00 04 12 FF` 返回一个 4 字节浮点数,表示距离,单位 m 返回示例 `01 08 12 距离3 距离2 距离1 距离0 FE` ## 控制 ### 行进控制 `0x20` | 方向数据 | 含义 | | -------- | ---- | | 0x00 | 停止 | | 0x01 | 前进 | | 0x02 | 后退 | 包体 `00 06 20 方向 速度 FF` 控制示例 `00 06 20 01 FF FF` ### 方向控制 `0x21` | 方向数据 | 含义 | | -------- | ---- | | 0x00 | 左转 | | 0x01 | 右转 | 包体 `00 06 21 方向 差速 FF` 控制示例 `00 06 21 01 01 FF` ### 单轮控制 `0x22` | 轮数据 | 含义 | | -------- | ---- | | 0x00 | 左前轮 | | 0x01 | 左后轮 | | 0x02 | 右后轮 | | 0x03 | 右前轮 | | 方向数据 | 含义 | | -------- | ---- | | 0x00 | 停止 | | 0x01 | 顺时针 | | 0x02 | 逆时针 | 包体 `00 07 22 轮 方向 速度 FF` 控制示例 `00 07 22 01 01 01 FF` ### 原地控制 `0x23` | 方向数据 | 含义 | | -------- | ---- | | 0x00 | 顺时针 | | 0x01 | 逆时针 | 包体 `00 06 23 方向 时间 FF` 控制示例 `00 06 23 01 01 FF` ### XYR 控制 `0x24` > ⚠️ 注意: X Y R 的取值范围为 -100 到 100,为有符号 8 位整数 包体 `00 07 24 X Y R FF` 控制示例 `00 07 24 01 01 01 FF` ## 设置 ### 设置设备名称 `0xA1` > ⚠️ 注意: 设备名称长度不能超过 16 个字符,此时最大包体长度 20,仅支持 ASCII 码 包体 `00 包体长度 A1 设备名称 FF` > 示例:WhiteTiger 设置示例 `00 0E A1 57 68 69 74 65 54 69 67 65 72 FF` ### 设置 PID 参数 `0xA2` > ⚠️ 注意: Kp Ki Kd 类型为 float,每个参数 4 个字节 包体 `00 07 A2 Kp1 Kp2 Kp3 Kp4 Ki1 Ki2 Ki3 Ki4 Kd1 Kd2 Kd3 Kd4 FF` 设置示例 `00 11 A2 01 01 01 01 01 01 01 01 01 01 01 01 01 FF` ## 状态回报 ### 电机状态汇报 `0xE0` 包体 `01 0C E0 电机A_IN_1_2 电机A_PWM 电机B_IN_1_2 电机B_PWM 电机C_IN_1_2 电机C_PWM 电机D_IN_1_2 电机D_PWM FE` 示例 `01 0C E0 01 FF 02 FF 02 FF 01 FF FE`