很多物联网设备在开发时为了缩短研发周期以及降低项目开发难度,都会选择串口转XX模块,例如串口转WIFI、串口转蓝牙、串口转4G等等,市场上很多产品也是在使用这种开发模式。只用关注串口通信协议,不用再去关注WIFI协议、蓝牙协议等。
很多物联网模块也是基于AT指令集操作的,模块返回的也是字符串,在物联网设备开发中我们经常会遇到字符串解析的问题。例如平台端发送来一串时间字符串“23-04-14 15:12:23”,MCU在接收这一串字符串后需要将数字字符串分解开,本文介绍一种数字字符串的解析方法。
应用案例
平台向设备发送时间设置信息,设备接收到数据后设置RTC的时间。
时间设置采用json格式的通信协议:
{"settime":"23-04-14 11:05:00"}//设置时间
当MCU通过联网模块接收到这一串字符后,就需要将其中的字符串数字解析为十六进制数据,MCU的RTC设置都是十六进制。首先使用strstr()函数判断关键字“settime”。
char *str=strstr(recstr,“settime”);//在接收到的字符串中检查是否有关键字
if(str!=NULL)
{
vDealNumStr(str);//如果字符串中有关键字,开始解析字符串
}