MCU和TM30串口数据交换流程
① 清空环形队列中的旧数据
② 向TM30发送读命令
③ 等待10ms
④ 调用receive_response()解析应答
TM30响应帧结构
代码按下面的方式解析响应:
F0 | SIZE | 36 | CMD_H | CMD_L | STATUS | PAYLOAD... | CHECKSUM | FF
响应和发送命令的主要区别是:
发送命令第4个正文内容:DIR
响应帧第4个正文内容:STATUS
含义:
| STATUS | 含义 |
|---|---|
03 | 命令执行成功 |
04 | TM30报告命令执行失败 |
| 其他 | 未知或非法状态 |
假设TM30当前已经是Stream-8,它可能返回:
F0 05 36 7D 16 03 08 D4 FF
解释:
| 字节 | 含义 |
|---|---|
F0 | 响应开始 |
05 | 正文长度5 |
36 | 固定TAG |
7D 16 | 对应输出模式命令 |
03 | 执行成功 |
08 | 当前输出模式是Stream-8 |
D4 | 校验和 |
FF | 响应结束 |
写入输出模式的正常ACK示例
写入完成后,如果响应没有额外payload,响应可能是:
F0 04 36 7D 16 03 CC FF
解释:
| 字节 | 含义 |
|---|---|
F0 | 帧头 |
04 | 正文长度4 |
36 | TAG |
7D 16 | 对应命令 |
03 | 写入成功 |
CC | 校验和 |
FF | 帧尾 |
校验:
36 + 7D + 16 + 03 = CC