Logging 将serial1保存到字符串-需要帮助
我正在使用Adafruit Ultimate GPS记录GPS数据,但想学习如何将数据保存为3个字符串,然后取出我想要的数据 这3个字符串被命名为Logging 将serial1保存到字符串-需要帮助,logging,gps,arduino,Logging,Gps,Arduino,我正在使用Adafruit Ultimate GPS记录GPS数据,但想学习如何将数据保存为3个字符串,然后取出我想要的数据 这3个字符串被命名为 nmeaRMC 恩马加 nmeaGSA 这是我想从保存到字符串中的GPS数据中提取的信息 $GPGGA,1235194807.038,N,01131.000,E,1,08,0.9545.4,M,46.9,M,,*47 在GGA中,我想: GPS定位质量=1 卫星数量=08 $GPGSA,A,3,04,05,09,12,24,2.5,1.3
- nmeaRMC
- 恩马加
- nmeaGSA
$GPGGA,1235194807.038,N,01131.000,E,1,08,0.9545.4,M,46.9,M,,*47 在GGA中,我想:
- GPS定位质量=1
- 卫星数量=08
$GPGSA,A,3,04,05,09,12,24,2.5,1.3,2.1*39 在GSA中,我希望:
- 三维固定值=3
- 垂直稀释精度(VDOP)=2.1
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4084.4230394003.1,W*6A 在RMC中,我希望:
- 时间=123519
- GPS状态=A
- 纬度=4807.038,北纬
- 经度=01131.000,东经
- 日期=230394
有人能帮我吗
!!终极GPS每秒发送RMC、GGA和GSA信号 您需要使用
strtok()
来解析这些“逗号分隔字符串”,使用分隔符,
关于StackOverflow已经有很多类似的问题,在互联网上也有很多例子
简而言之,第一个调用应该是
char *token = strtok(nmeaGGA, ",");
token
将指向第一个字段的以null结尾的字符串,即“$GPGGA”。对于接下来的通话,请使用
token = strtok(NULL, ",");
请注意空值。该函数将在同一字符串中查找后续字段。通过计数跳过不需要的字段。要将字符串转换为数字,请使用atoi()
或atof()
对于RMC中的纬度和经度,对4807.038和N使用两个单独的标记
由于逗号的数量是固定的,并且每种类型的字符串都已知,因此您也可以使用sscanf()
作为替代方法来解析字符串