GPGGA \ GPRMC 格式解析

一、GPGGA格式解析

示例:

$GPGGA,044744.00,3122.4658,N,12025.2791,E,1,10,3.00,12.575,M,7.100,M,00,0000*5F

解析说明:

字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息

字段1:UTC 时间,hhmmss.sss,时分秒格式

字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

字段3:纬度N(北纬)或S(南纬)

字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)

字段5:经度E(东经)或W(西经)

字段6:GPS状态,0=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算

字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)

字段8:HDOP水平精度因子(0.5 - 99.9)

字段9:海拔高度(-9999.9 - 99999.9)

字段10:地球椭球面相对大地水准面的高度

字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)

字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)

字段13:校验值

二、GPRMC格式解析

格 式: $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>

示例:

 $GPRMC,044838.00,A,3122.4658,N,12025.2799,E,0.257,261.7,180921,0.0,E,A*3B

解析说明:

         字段 0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific                         GPS/TRANSIT Data(RMC)推荐最小定位信息

          字段 1:UTC时间,hhmmss.sss格式

          字段 2:状态,A=定位,V=未定位

          字段 3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)

          字段 4:纬度N(北纬)或S(南纬)

          字段 5:经度dddmm.mmmm,度分格式(前导位数不足则补0)

          字段 6:经度E(东经)或W(西经)

          字段 7:速度,节,Knots(一节也是1.852千米/小时)

          字段 8:方位角,度(二维方向指向,相当于二维罗盘)

          字段 9:UTC日期,DDMMYY格式

          字段10:磁偏角,(000 - 180)度(前导位数不足则补0)

          字段11:磁偏角方向,E=东,W=西

          字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)

          字段13:校验

三、gpsmon 命令输出信息截图(星网宇达惯导+千寻RTK):

四、 cgps -s 命令输出信息截图

 

五、 watch chronyc sources -v  命令输出信息截图

注:

1、系统环境,要安装:

(1) chronyd 

(2)gpsd

(3)ptpd

2、各服务状态查看命令:

(1) chronyd 

查看:systemctl  status  chronyd.service

 

(2)gpsd

 查看:systemctl  status  gpsd.service

 

(3)ptpd

 查看:systemctl  status  ptpd.service

 

参考&&致谢:

GPGGA格式解析 - 简书

$GPRMC解析_宁静致远-CSDN博客

  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要读取GPRMC格式的经度、纬度和速度信息,您需要使用Arduino Uno上的串口通信和GPS模块之间的连接。以下是读取GPRMC格式的步骤: 1. 设置串口:将Arduino Uno的串口设置为与GPS模块的波特率相同(通常为9600bps)。 2. 读取GPS数据:使用Serial.read()函数从GPS模块读取数据。您可以使用Serial.available()函数来检查是否有可用的数据,并使用Serial.read()函数来读取它。 3. 解析数据:使用字符串函数(如strtok())将数据分解为逗号分隔的字段。 4. 从GPRMC消息中提取经度、纬度和速度信息:使用分解后的字段来提取经度、纬度和速度信息。在GPRMC格式中,经度和纬度通常以度分秒(DMS)格式给出,需要将其转换为十进制度数。 5. 交替读取GPGGAGPRMCGPGGAGPRMC消息是交替发送的。您可以使用一个标志来跟踪当前接收的消息类型,并根据需要提取数据。 下面是一个简单的示例代码,可以帮助您开始编写读取GPRMC格式的经度、纬度和速度信息的程序: ```C++ #include <SoftwareSerial.h> SoftwareSerial gpsSerial(2, 3); // GPS模块连接到数字引脚2和3 bool isGPRMC = false; // 标志,指示当前读取的消息是否为GPRMC void setup() { Serial.begin(9600); // 初始化串口通信 gpsSerial.begin(9600); // 初始化GPS模块的串口通信 } void loop() { while (gpsSerial.available() > 0) { // 如果有可用的GPS数据 char c = gpsSerial.read(); // 读取字符 if (c == '$') { // 如果读取到了消息的开始标志 isGPRMC = false; // 暂时将当前消息类型标记为非GPRMC } else if (c == '\n') { // 如果读取到了消息的结束标志 if (isGPRMC) { // 如果当前消息类型为GPRMC // 从GPRMC消息中提取经度、纬度和速度信息 // 并将其转换为十进制度数 // TODO: 实现代码来提取经度、纬度和速度信息 } isGPRMC = !isGPRMC; // 切换到另一种消息类型 } } } ``` 请注意,此示例代码仅提供了一个框架,您需要根据您的GPS模块和数据格式进行修改,以正确读取和解析GPRMC格式的经度、纬度和速度信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xw-何妨吟啸且徐行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值