GPS是英文Global Positioning System(全球定位系统)的简称。

NMEA0183(https://files.cnblogs.com/files/libra13179/NMEA0183-GPS-%E5%8D%8F%E8%AE%AE.pdf) 协议是由美国国家海洋电子协会开发、 维护并发布的标准 ,用于航海远洋时使用的电子仪器之间的通信. 目前大部分的 GPS 接受设备都遵循这一标准.【Tim (xtimor@gmail.com) 提供了一个非常完善的 NMEA 解码库,在以下网址可以下载到:https://sourceforge.net/projects/nmea/ 或者https://github.com/AHR-Project/nmealib】{原本还想自己写一个对这个nmealib的代码解析的文章,看到一个还不错的博客就偷懒不写了 http://blog.csdn.net/mcgrady_tracy/article/details/50534920}

 

我们常见的数据

 

 

备注:这两图的区别是,上图中的 GPS 数据信息数据间有很多连续的“逗号”,而下图中逗号与逗号之间一般是有数字的,它们分别对应了 GPS 信号差与 GPS 信号良好的状况。

    

解析一下

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15><CR><LF>
例子:“$GPGGA,092725.00,4717.11399,N,00833.91590,E,1,8,1.01,499.6,M,48.0,M,,0*5B\r\n”

<1>  UTC 时间,格式为 hhmmss.sss                                      
<2> 纬度,格式为 ddmm.mmmm(前导位数不足则补 0
<3> 纬度半球,N 或 S(北纬或南纬) <4> 经度,格式为 dddmm.mmmm(前导位数不足则补 0
<5> 经度半球,E 或 W(东经或西经)    <6> 定位质量指示,0=定位无效,1=标准定位,2=差分定位,6=估算
<7> 使用卫星数量,从 0012(前导位数不足则补 0
<8> 水平精确度,0.599.9                  
<9> 天线离海平面的高度,-9999.99999.9 米                 <10> 高度单位,M 表示单位米 <11> 大地椭球面相对海平面的高度(-999.99999.9)    
<12> 高度单位,M 表示单位米 <13> 差分 GPS 数据期限(RTCM SC-104),最后设立 RTCM 传送的秒数量 <14> 差分参考基站标号,从 00001023(前导位数不足则补 0
<15> 校验和。

 在u-center的工具中我们可以看到其解析的数据直接解析出【注意是目前的数据是$GPGGA,,,,,,0,00,99.99,,,,,,*48】

 

$GPGSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*<18><CR><LF>
例子:“$GPGSA,A,3,23,29,07,08,09,18,26,28,,,,,1.94,1.18,1.54*0D\r\n“
<1>  模式 2:M = 手动, A = 自动                                    
<2>  模式 1:定位型式 1 = 未定位,2 = 二维定位,3 = 三维定位
<3>  第 1 信道正在使用的卫星 PRN 码编号(Pseudo  Random  Noise,伪随机噪声码),01至 32(前导位数不足则补 0,最多可接收 12 颗卫星信息)

<4>  第 2 信道正在使用的卫星 PRN 码编号
<5>  第 3 信道正在使用的卫星 PRN 码编号
<6>  第 4 信道正在使用的卫星 PRN 码编号
<7>  第 5 信道正在使用的卫星 PRN 码编号
<8>  第 6 信道正在使用的卫星 PRN 码编号
<9>  第 7 信道正在使用的卫星 PRN 码编号
<10>  第 8 信道正在使用的卫星 PRN 码编号
<11>  第 9 信道正在使用的卫星 PRN 码编号
<12>  第 10 信道正在使用的卫星 PRN 码编号
<13>  第 11 信道正在使用的卫星 PRN 码编号
<14>  第 12 信道正在使用的卫星 PRN 码编号
<15>  PDOP 综合位置精度因子(0.5 - 99.9<16>  HDOP 水平精度因子(0.5 - 99.9<17>  VDOP 垂直精度因子(0.5 - 99.9<18>  校验和

 

 

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*<13><CR><LF> 
例子:$GPRMC,083559.00,A,4717.11437,N,00833.91522,E,0.004,77.52,091202,,,A*57
<1>  UTC(Coordinated Universal Time)时间,hhmmss(时分秒)格式 
<2>  定位状态,A=有效定位,V=无效定位 
<3>  Latitude,纬度 ddmm.mmmm(度分)格式(前导位数不足则补 0<4>  纬度半球 N(北半球)或 S(南半球) 
<5>  Longitude,经度 dddmm.mmmm(度分)格式(前导位数不足则补 0
<6>  经度半球 E(东经)或 W(西经)
<7>  地面速率(000.0~999.9 节,Knot,前导位数不足则补 0<8>  地面航向(000.0~359.9 度,以真北为参考基准,前导位数不足则补 0<9>  UTC 日期,ddmmyy(日月年)格式 
<10>  Magnetic Variation,磁偏角(000.0~180.0 度,前导位数不足则补 0<11>  Declination,磁偏角方向,E(东)或 W(西) 
<12>  Mode  Indicator,模式指示(仅 NMEA0183  3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
<13>  校验和。

 

 

格式:$GPVTG,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>*<10><CR><LF> 
例子:$GPVTG,77.52,T,,M,0.004,N,0.008,K,A*06
<1>  以真北为参考基准的地面航向
<2>  T,表示“真”
<3>  以磁北为参考基准的地面航向
<4>  M,表示“磁场”
<5>  地面速率
<6>  N,表示“节”
<7>  地面速率
<8>  K,表示“千米/小时”
<9>  模式指示(A=自主定位,D=差分,E=估算,N=数据无效) 
<10>  校验和

 

 

格式:$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7>*<8><CR><LF>  
例子:$GPGLL,4717.11364,N,00833.91565,E,092321.00,A,A*60
<1>  纬度 ddmm.mmmmm(度分)
<2>  纬度半球 N(北半球)或 S(南半球)
<3>  经度 dddmm.mmmmm(度分)
<4>  经度半球 E(东经)或 W(西经)
<5>  UTC 时间:hhmmss(时分秒)
<6>  定位状态,A=有效定位,V=无效定位 
<7>  模式指示(A=自主定位,D=差分,E=估算,N=数据无效) 
<8>  校验和

 

 

格式:$GPZDA,<1>,<2>,<3>,<4>,<5>,<6>*<7><CR><LF>  
例子:$GPZDA,082710.00,16,09,2002,00,00*64
<1>  UTC 时间:hhmmss(时分秒,格林威治时间)
<2><3><4><5>  本地区域小时(NEO-6M 不支持,为 00<6>  本地区域分钟(NEO-6M 不支持,为 00<7>  校验和

 

 

posted on 2016-09-26 15:46  陌鉎こ城sHi  阅读(634)  评论(0编辑  收藏  举报