不是什么新东西,但是强烈推荐!!!因为不久之前我还看到过有同学用自己写的状态机来解析串口接收到的字符串,自己做符号-整数转换,根本没必要花这个精力。推荐使用C语言提供的字符串处理函数sscanf,其作用是从一个字符串中读进与指定格式相符的数据。用在GPS数据接收和消息提取中十分方便。
例如GPGMV报文的格式为:$GPGMV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*<9><CR><LF>
那么提取数据的方法为:
keyword=strstr(buffer,"GPGMV");
sscanf(keyword,"GPGMV,%[^,],%lf,%c,%lf,%c,%f,%f,%f,%f,%f"
,gmvData.utc_time,&(gmvData.latitude_value)
,&(gmvData.latitude),&(gmvData.longitude_value)
,&(gmvData.longitude),&(gmvData.alti)
,&(gmvData.speedE),&(gmvData.speedN)
,&(gmvData.speedU),&(gmvData.azimuth_angle));
在串口中断函数中只需要判断结束符\r或\n即可,十分方便。sscanf在string.h中