Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 将serial1保存到字符串-需要帮助_Logging_Gps_Arduino - Fatal编程技术网

Logging 将serial1保存到字符串-需要帮助

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

我正在使用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,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()
作为替代方法来解析字符串