MCU和TM30串口数据交换流程

① 清空环形队列中的旧数据
② 向TM30发送读命令
③ 等待10ms
④ 调用receive_response()解析应答

TM30响应帧结构

代码按下面的方式解析响应:

F0 | SIZE | 36 | CMD_H | CMD_L | STATUS | PAYLOAD... | CHECKSUM | FF

响应和发送命令的主要区别是:

发送命令第4个正文内容:DIR
响应帧第4个正文内容:STATUS

含义:

STATUS含义
03命令执行成功
04TM30报告命令执行失败
其他未知或非法状态

假设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
36TAG
7D 16对应命令
03写入成功
CC校验和
FF帧尾

校验:

36 + 7D + 16 + 03 = CC