我正在使用Adafruit Ultimate GPS来记录gps数据,但想学习如何将数据保存到3个字符串然后取出我想要的数据。
3个字符串名为
以下是我想从保存在字符串中的GPS数据中取出的信息。
$ GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,男,46.9,M,* 47。
在GGA中,我想:
$ GPGSA,A,3,04,05,09,12 ,,, 24 ,,,,, 2.5,1.3,2.1 * 39
在GSA中我想要:
$ GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W * 6A
在RMC中,我想要:
任何人都可以帮我吗?
!!终极GPS每秒发送RMC,GGA和GSA !!
答案 0 :(得分:0)
您需要使用strtok()
使用分隔符,
来解析这些“以逗号分隔的字符串”。
StackOverflow上已经有很多类似的问题,互联网上有很多例子。
简而言之,第一个电话应该是
char *token = strtok(nmeaGGA, ",");
token
将指向第一个字段的以空字符结尾的字符串,即“$ GPGGA”。对于下一个电话,请使用
token = strtok(NULL, ",");
注意NULL值。该函数将在同一个字符串中查找后续字段。通过计数跳过您不想要的字段。要将字符串转换为数字,请使用atoi()
或atof()
。
对于RMC中的纬度和经度,请为4807.038和N使用两个单独的标记。
由于逗号的数量是固定的并且对于每种类型的字符串都是已知的,因此您也可以使用sscanf()
作为替代来解析字符串。