最近项目上增加了一个联网功能,以实现设备在手机上的远程交互、数据上报、指令下发控制等功能。使用的是华为的鸿蒙透传协议,MCU上需要实现对数据的接收、解析和应答等处理。实现的功能代码如下:
1、数据的接收,使用的是串口,这里代码就不再贴出来,调用的接口:
String data = Serial.readStringUntil('\n'); // 读取数据,直到遇到“\n”结束;
2、消息数据拆解:
透传协议的约定:命令字,数据长度,json数据
具体实现代码如下:
2.1、创建一个结构体,用于缓存解析出来的数据:
//WIFI模组TLV消息缓存结构体
typedef struct{
char command[100]; // 命令字不超过99个字符,因为字符串最后要“\0”
int number;
char parameter[1000]; // 参数不超过999个字符,因为字符串最后要“\0”
} TLV_Data;
2.2、实现解析数据函数,并将数据保存到结构体中
//消息解析,用于解析信息数据,拆分为关键字、长度,参数(即消息体)
void parseCommand(char *str, TLV_Data *cmd) {
// 初始化cmd结构体的字段
memset(cmd->command, 0, sizeof(cmd->command));
cmd->number = 0;
memset(cmd->parameter, 0, sizeof