37 lines
1.1 KiB
Markdown
37 lines
1.1 KiB
Markdown
# SRCP 通信协议帧结构
|
||
|
||
## 帧格式
|
||
|
||
| 字段 | 内容 | 长度 | 说明 |
|
||
|------|------|------|------|
|
||
| SOF | 0xBB 0x77 | 2 bytes | 帧头 |
|
||
| x_move | -660~660 | 2 bytes | 平动左右 (小端序) |
|
||
| y_move | -660~660 | 2 bytes | 平动前后 (小端序) |
|
||
| yaw | -660~660 | 2 bytes | 云台偏航 (小端序) |
|
||
| pitch | -660~660 | 2 bytes | 云台俯仰 (小端序) |
|
||
| feed | -660~660 | 2 bytes | 拨弹轮 (小端序) |
|
||
| key | 0~15 | 1 byte | 按键 |
|
||
| crc8 | CRC8-MAXIM | 1 byte | 校验 |
|
||
| EOF | 0xEE | 1 byte | 帧尾 |
|
||
|
||
## 帧长度
|
||
|
||
```
|
||
SOF(2) + x_move(2) + y_move(2) + yaw(2) + pitch(2) + feed(2) + key(1) + crc8(1) + EOF(1) = 15 bytes
|
||
```
|
||
|
||
## 字节序
|
||
|
||
- 所有 int16_t 类型字段(x_move, y_move, yaw, pitch, feed)使用 **小端序**
|
||
|
||
## 代码示例
|
||
|
||
```cpp
|
||
constexpr int FRAME_LENGTH = 15; // 总帧长度
|
||
|
||
frame[0] = 0xBB; // SOF
|
||
frame[1] = 0x77; // SOF
|
||
frame[2] = x_move & 0xFF; // 低字节
|
||
frame[3] = (x_move >> 8) & 0xFF; // 高字节
|
||
// ... 其他字段
|
||
frame[14] = 0xEE; // EOF |