新增 UART 消息 - OpenExo
新增 UART 消息
- 1. 消息结构
- 2. 声明消息ID
- 3. 编写消息处理函数
- 4. 加入消息分发表
- 5. 完成与测试
- 建议
1. 消息结构
-
每个UART消息有两个ID:
-
Get ID:用于请求对方微控器数据
-
Update ID:用于设置接收到的数据
-
-
每条消息ID必须唯一,每个ID都要有对应的“消息处理函数(handler)”
2. 声明消息ID
-
打开 src/uart_commands.h
-
找到 namespace UART_command_names
-
在这里声明你的消息ID(如GET_NEW_SENSOR,UPDATE_NEW_SENSOR等)
3. 编写消息处理函数
-
仍在 uart_commands.h,找到 namespace UART_command_handlers
-
写入消息处理函数,格式如下:
static inline void your_function_name(UARTHandler* handler, ExoData* exo_data, UART_msg_t msg)
{// 实现你的数据处理逻辑
}
- 函数名与你的消息功能对应
4. 加入消息分发表
-
还是在 uart_commands.h,定位到 namespace UART_command_utils
-
找到 handle_msg 函数
-
在switch-case中增加你的消息ID分支,调用你写的handler
switch(msg.id) {case UART_command_names::GET_NEW_SENSOR:UART_command_handlers::your_function_name(handler, exo_data, msg);break;...
}
5. 完成与测试
-
到此你已成功注册新的UART消息及处理逻辑。
-
建议用串口打印/断点等方式测试,确保新消息正常收发和解析。
建议
-
Get/Update 成对命名有助于代码可读性与维护。
-
消息ID建议加注释、编号,便于全局唯一和冲突排查。
-
handler函数可直接读写 exo_data,适合进行系统变量刷新、校准、状态同步等操作。
-
消息内容复杂时建议先设计好消息结构体,避免手动拼包出错。