原文地址:GPS卫星定位接收器的NMEA协议解析作者:蟹蟹
GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存,在没有进一步处理之前缓存中是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。同其他通讯协议类似,对GPS进行信息提取必须首先明确其帧结构,然后才能根据其结构完成对各定位信息的提取。对于本文所使用的GARMINGPS天线板,其发送到计算机的数据主要由帧头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有"$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况,我们所关心的定位数据如经纬度、速度、时间等均可以从"$GPRMC"帧中获取得到,该帧的结构及各字段释义如下:
  $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh

<1>当前位置的格林尼治时间,格式为hhmmss
<2> 状态, A为有效位置,V为非有效接收警告,即当前天线视野上方的卫星个数少于3颗。
<3> 纬度,格式为ddmm.mmmm
<4> 标明南北半球, N为北半球、S为南半球
<5>径度,格式为dddmm.mmmm
<6>标明东西半球,E为东半球、W为西半球
<7>地面上的速度,范围为0.0到999.9
<8>方位角,范围为000.0到 359.9 度
<9> 日期,格式为ddmmyy
<10>地磁变化,从000.0到 180.0 度
<11>地磁变化方向,为E 或 W
  至于其他几种帧格式,除了特殊用途外,平时并不常用,虽然接收机也在源源不断地向主机发送各种数据帧,但在处理时一般先通过对帧头的判断而只对"$GPRMC"帧进行数据的提取处理。如果情况特殊,需要从其他帧获取数据,处理方法与之也是完全类似的。由于帧内各数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ASCII码"$"来判断是否是帧头,在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并作出相应的处理。
附:NMEA0183常用协议格式

说明:NMEA0183格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC等

1、 GPS DOP and ActiveSatellites(GSA)当前卫星信息

$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF>

<1>模式 :M = 手动, A =自动。
<2>定位型式 1 = 未定位, 2 =二维定位, 3 = 三维定位。
<3>PRN 数字:01 至 32表天空使用中的卫星编号,最多可接收12颗卫星信息。
<4>PDOP位置精度因子(0.5~99.9)
<5>HDOP水平精度因子(0.5~99.9)
<6>VDOP垂直精度因子(0.5~99.9)
<7> Checksum.(检查位).


2、 GPS Satellites in View(GSV)可见卫星信息
$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,?<4>,<5>,<6>,<7>,<8><CR><LF>

<1> GSV语句的总数
<2> 本句GSV的编号
<3> 可见卫星的总数,00 至12。
<4> 卫星编号, 01 至32。
<5>卫星仰角, 00 至 90度。
<6>卫星方位角, 000 至 359度。实际值。
<7>讯号噪声比(C/No), 00至 99 dB;无表未接收到讯号。
<8>Checksum.(检查位).

第<4>,<5>,<6>,<7>项个别卫星会重复出现,每行最多有四颗卫星。其余卫星信息会于次一行出现,若未使用,这些字段会空白。

3、Global Positioning System FixData(GGA)GPS定位信息

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>

<1>UTC时间,hhmmss(时分秒)格式
<2>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<3>纬度半球N(北半球)或S(南半球)
<4>经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<5>经度半球E(东经)或W(西经)
<6>GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算
<7>正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
<8>HDOP水平精度因子(0.5~99.9)
<9>海拔高度(-9999.9~99999.9)
<10>地球椭球面相对大地水准面的高度
<11>差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12>差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)

4、Recommended Minimum Specific GPS/TRANSITData(RMC)推荐定位信息

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

<1>UTC时间,hhmmss(时分秒)格式
<2>定位状态,A=有效定位,V=无效定位
<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4>纬度半球N(北半球)或S(南半球)
<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6>经度半球E(东经)或W(西经)
<7>地面速率(000.0~999.9节,前面的0也将被传输)
<8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
<9>UTC日期,ddmmyy(日月年)格式
<10>磁偏角(000.0~180.0度,前面的0也将被传输)
<11>磁偏角方向,E(东)或W(西)
<12> 模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
5、 Track Made Good and GroundSpeed(VTG)地面速度信息
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh<CR><LF>

<1>以真北为参考基准的地面航向(000~359度,前面的0也将被传输)
<2>以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
<3>地面速率(000.0~999.9节,前面的0也将被传输)
<4>地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
<5> 模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

GPS卫星定位接收器的NMEA协议解析相关推荐

  1. GPS NMEA协议解析之通用语句

    GPS NMEA协议解析(NMEA通用语句) 文章目录 前言 一.NMEA协议简介 二.NMEA数据格式 1.GGA(全球定位系统定位数据) 2.GSA(GNSS 精度因子与有效卫星) 3.GSV(可 ...

  2. GPS使用记录NMEA数据解析、RTK定位以及ntrip协议

    目录 1. 概述 2. 泰斗GPS定位模组 3. RTK GPS定位 4. ntrip协议 5. 千寻 1. 概述 本文主要是记录下GPS相关的内容.最开始叫做<泰斗GPS使用记录>,那时 ...

  3. minmea——GPS NMEA 0183 协议解析库

    今天给大家推荐一个纯C语言编写,轻量级的GPS NMEA 0183协议解析库:minmea github地址:https://github.com/kosma/minmea 一.特点 1.C99标准编 ...

  4. 【灵动MM32-DMA传输-GPS解算】 移植NMEA协议库解析GGA数据格式

    灵动MM32单片机移植NMEA协议库解算GGA数据格式通过串口dma硬件传输 今天使用一款常见的gps模块,goouuu果云GPS模块,这款产品可以说是便宜好用,但是这个原版本的例程我觉得不太行,解析 ...

  5. 嵌入式GPS模块编程 NMEA协议 0183协议

    嵌入式GPS模块编程 NMEA协议 0183协议 学前小知识: NMEA协议是为了在不同的GPS导航设备中建立统一的RTCM(海事无线电技术委员会)标准,它最初是由美国国家海洋电子协会(NMEA-Th ...

  6. 远程定位gps linux,GPS(NMEA)数据解析

    一.GPS定位信息 设置好gps模式,启动gps,正常的话在gps通路有NMEA数据上报,如下: $GPGSV,3,1,11,01,62,130,42,07,61,201,43,11,72,075,2 ...

  7. GPS NMEA0183协议解析(转载)

    这几天忙里偷闲集中把GPS NMEA0183协议好好研究了一下,不仅整理了一份相对较完整的协议文本,并且编写了一个相对较完善的GPS协议解析程序. 上图是我所说的测试程序,已经可以获得定位数据及相关卫 ...

  8. ublox ubx协议 c语言,Ublox-M8N GPS接收机UBX协议解析

    Ublox-M8N GPS接收机UBX协议解析 //============================================代码补充========================== ...

  9. NMEA报文解析程序(c语言)-命令解析

    开发工具:DEV NMEA协议基础知识可参见:GPS理论知识NMEA 0813协议 为完成课程设计而参照网上例子,按照课程要求修改而来 1.在搜集资料过程中发现网上很多都不完整,而且有的会有很多小错误 ...

最新文章

  1. 周伯文对话斯坦福AI实验室负责人:下一个NLP前沿是什么?
  2. u-boot-2009.08在2440上的移植详解(三)
  3. 【转】The underlying connection was closed
  4. oracle分区表官方指南
  5. 刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)
  6. ios超级签名_ios超级签名多少钱?决定超级签名价格的因素有哪些
  7. Freebsd屏幕字体的调节
  8. cocos2d for android,cocos2d jsb 打包 Android APK
  9. STM32CubeMX使用(七)之通用定时器和系统定时器
  10. 毕业设计-基于stm32的校园旧物回收系统
  11. 华为 android 5.0系统下载地址,Emui5.0+Android 华为Nova内测包
  12. 计数器代码php,php 的计数器程序代码示例
  13. 外贸建站五大必备要领
  14. 计算机启动方式如何选择USB启动,如何设置电脑从usb启动详细方法
  15. CSS实现文本居中和块级元素居中
  16. Python网络爬虫反爬破解策略实战
  17. 计算机6005是开机时间,怎么查电脑的开机,和关机时间·,同学们
  18. 制作QQ会员页面导航
  19. SN74LVC1G08DBVR
  20. CNFs/CNTs复合薄膜-供应高储能效率铁电聚合物基电介质/ 三硒化二铟In2Se3/ 硒化铟(InSe和In2Se3)纳米/Cu(In,Ga)Se_2和Cu_2ZnSnSe_4薄膜定制

热门文章

  1. java基础之线程概述_繁星漫天_新浪博客
  2. 使用python的wordcloud包实现中文标签云制作
  3. 日媒:“二战”后70年日本的创新路遇到拐点
  4. python是面向对象开发_Python之面向对象
  5. 宜未雨而绸缪,毋临渴而掘井。
  6. STM32学习笔记(十七)TLTLCD显示实验
  7. 前端入门学习笔记十九
  8. 即刻金服车牌币火爆上线
  9. 数字人民币APP上架,跨境交易将进入新境界
  10. 孤岛危机 教程:使用Voxel技术创建地形