作者:haomingHu
email:hhm_master@163.com

背景:最近需要在imx6ull 的Linux板子上面接收定位模块的0183格式的数据并进行解析,并且用QT实现,绘制定位信息各种数据的动态曲线图

GPS NMEA协议,0183 定位数据格式 双模定位:GNXXX GPS+BD

如果是GN开头的数据则不做区分,如果是GP或者BD开头的数据则要进行区分。

数据帧格式:
$aaccc,ddd,ddd,…,ddd*hh

1、“$”——帧命令起始位
2、aaccc——地址域,前两位为识别符,后三位为语句名
3、ddd…ddd——数据
4、“*”——校验和前缀
5、hh——校验和(check sum),$与 * 之间所有字符 ASCII 码的校验和(各字节做异或运算,得到校验和后,再转换 16 进制格式的 ASCII 字符。)
6、<CR><LF>——CR(Carriage Return) + LF(Line Feed)帧结束,回车和换行

数据种类:

  • GNZDA:UTC 时间和日期

  • GNGGA:UTC时间信息

  • GPGLL:地理定位信息

  • GPGSA:当前GPS卫星信息

  • BDGSA:当前北斗卫星信息

  • GPGSV:GPS可见卫星信息

  • BDGSV:北斗可见卫星信息

  • GNRMC:推荐定位信息

  • GNVTG:地面速度信息

    1. GNZDA:时间信息

    ​ UTC 时间和日期 :这里的UTC时间是指协调世界时,相当于本初子午线(0经度上的时间),和北京时间差8个小时

    ​ 数据示例: $GNZDA,092320.000,25,04,2021,00,00*40

    ​ 帧格式:$GPZDA, <1>,<2>,<3>,<4>,<5>*hh

    ​ 数据说明:

    • <1> :UTC时间,dd:dd:dd.ddd —> 时分秒
    • <2>:日
    • <3>:月
    • <4>:年
    • <5>:地方时与世界时之差
    • <6>: 检校位 *hh

    2. GNGGA:卫星定位信息

    数据示例:$GNGGA,092320.000,2519.0490,N,11024.8391,E,1,23,0.7,175.7,M,0.0,M,*7D

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

    • <1> UTC 时间,hhmmss(时分秒)格式 和GNZDA的UTC一样,属于协调世界时
    • <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 也将被传输,如果不是差分定位将为空)

重点:

经纬度转化方法:比如给出的数据中,可以得到纬度是 2519.0490 N,那么实际的纬度=25+19.0490÷60,得到的经度是11024.8391,那么实际的经度是:110+24.8391÷60 因为报文里面用的是标准的度分格式,由于经纬的范围分别是090、0180,所以切割位置也不一样

3. GPGLL:地理定位信息

示例数据:$GNGLL,2519.0490,N,11024.8391,E,092320.000,A,A*4A

$GNGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7> * hh

  • <1>纬度 ddmm.mmmmm (度分)
  • <2> 纬度半球N (北半球)或S (南半球)
  • <3>经度 dddmm.mmmmm (度分)
  • <4> 经度半球E (东经)或W (西经)
  • <5> UTC 时间: hhmmss (时分秒)
  • <6>定位状态, A=有效定位,V=无效定位
  • <7> 模式指示(A=自主定位,D=差分,E=估算,N=数据无效)

4. GPGSA:当前GPS卫星信息

​ 示例数据:$GPGSA,A,3,09,17,33,02,34,06,14,36,19,35,04,28,1.2,0.7,1.0*3B

$GPGSA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>*hh

  • <1> 模式 2:M = 手动, A = 自动。

  • <2> 模式 1:定位型式 1 = 未定位,2 = 二维定位,3 = 三维定位。

  • <3> 第 1 信道正在使用的卫星 PRN 码编号

  • <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)

  • 注解:(Pseudo Random Noise,伪随机噪声码),01 至 32(前导位数不足则补 0,最多可接收 12 颗卫星信息)一定会有十二个占位数据,如果没有,则会是空,但是也算为一个占位数据,精度因子越小,则准确度越高

​ **5. BDGSA:当前北斗卫星信息 **( 帧格式和GPGSA一致)
示例数据:$BDGSA,A,3,01,02,03,19,04,05,07,08,10,06,13,1.2,0.7,1.0*25

6. GPGSV:GPS可见卫星信息
​ 示例数据:
​ $GPGSV,4,1,15,02,34,276,40,03,15,039,04,07,080,38,06,57,317,4577
​ $GPGSV,4,2,15,09,15,112,43,12,08,323,14,42,164,45,17,53,053,47
7E
​ $GPGSV,4,3,15,19,55,009,44,24,05,279,28,56,168,45,33,41,115,4374
​ $GPGSV,4,4,15,34,32,164,43,35,57,065,46,36,55,145,40
4B

​ $GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,…,<4>,<5>,<6>,<7>*<8>
​ (1) GSV 语句总数。
​ (2)本句 GSV的编号。
​ (3) 可见卫星的总数(00-12, 前面的0也将被传输)。
​ (4)卫星编号(01~32, 前面的0也将被传输)。
​ (5) 卫星仰角(00-90度,前面的0也将被传输)。
​ (6)卫星方位角 (000~359 度,前面的0也将被传输)
​ (7)载噪比(00~99dB, 没有跟踪到卫星时为空)。
​ 注:每条GSV语句最多包括四颗卫星的信息,其他卫星的信息将在下一条 $GPGSV语句中输出

7. BDGSV:北斗可见卫星信息
​ 示例数据:
​ $BDGSV,3,1,12,01,42,122,46,02,48,229,39,03,62,180,45,04,29,109,406C
​ $BDGSV,3,2,12,05,26,251,35,06,05,164,35,07,59,159,45,08,65,340,43
61
​ $BDGSV,3,3,12,10,80,228,44,13,61,283,44,19,41,074,48,20,05,038,*68

​ 帧格式和GPGSV一致

8. GNRMC:推荐最小的定位信息
​ 示例数据:$GNRMC,092320.000,A,2519.0490,N,11024.8391,E,0.00,0.00,250421,A7D
​ $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>
<13>
​ <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> 校验和

9. GNVTG:地面速度信息
​ 示例数据:$GNVTG,0.00,T,M,0.00,N,0.00,K,A*23
​ $GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh
​ <1> 以真北为参考基准的地面航向(000~359 度,前面的 0 也将被传输)
​ <2> 以磁北为参考基准的地面航向(000~359 度,前面的 0 也将被传输)
​ <3> 地面速率(000.0~999.9 节,前面的 0 也将被传输)
​ <4> 地面速率(0000.0~1851.8 公里/小时,前面的 0 也将被传输)
​ <5> 模式指示(仅 NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

注解:

  • 校验和:通过计算 $ 和 * 两个符号之间所有字符ASCLL码的异或运算得到,将得到的结果以ASCII字符表示
    例如:例如语句: $GNZDA05555.000,08,12,2015,00,00*4C, 校验和(红色部分参与计算)计算方法为:
    0X47 xor 0X4E xor 0X5A xor 0X44 xor 0X41 xor 0X2C xor 0X30 xor 0X39 xor 0X35 xor 0X35 xor 0X35 xor 0X35 xor 0X2E xor 0X30 xor 0X30 xor 0X30 xor 0X2C xor 0X30 xor 0X38 xor 0X2Cxop 0X31 xorl0X32 xor0X20 xor 0X32 xor 0X30 xor 0X31 xor 0X35 xor 0X2C xor 0X30 xor 0X30 xor 0X2C xor 0X30 xor 0X30
    得到的结果就是0X4C,用ASCII表示就是4C.

本文仅供参考,如有不对,请在评论区留言,或者发送邮件

GPS NMEA协议,0183 定位数据格式 双模定位:GNXXX GPS+BD 完整版相关推荐

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

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

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

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

  3. GPS NMEA-0183协议常用报文数据格式

    点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 整理的GPS有关的协议分析资料." 之前分析一些车载设备的流量时,有部分经验,在这里和大家分享. 产生这些流量的设备通常是实体终端 ...

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

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

  5. 远程定位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 ...

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

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

  7. GPS的定位原理、定位方式与协议规范

    所谓GPS即全球定位系统(英语:Global Positioning System,通常简称GPS),又称全球卫星定位系统,是一个中距离圆型轨道卫星导航系统.它可以为地球表面绝大部分地区(98%)提供 ...

  8. GPS NMEA-0183协议常用数据格式及解析攻略

    GPS协议标准目前常用到的是NMEA-0183,很显然,这是由NMEA发布的一个标准. NMEA是National Marine Electronics Association ,即美国国家海洋电子协 ...

  9. GPS卫星定位接收器的NMEA协议解析

    原文地址:GPS卫星定位接收器的NMEA协议解析作者:蟹蟹 GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中.前面的代码只负责从串口接收数据并将其放置 ...

  10. gps定位信息mysql_GPS定位数据库表设计

    1     表设计 1.1   设计思想 减少冗余数据的存储 数据写入时进行预运算 通过降低记录量提高系统的响应能力 降低磁盘的读操作 1.2   模型结构 GPS轨迹日志数据表保存原始的定位信息数据 ...

最新文章

  1. 软件使用 excel
  2. 在iframe框架中全屏不好使的原因
  3. A query was run and no Result Maps were found for the Mapped Statement....
  4. 预定义的类型“System.Object”未定义或未导入
  5. 史上最全的Nginx配置参数中文说明
  6. 酷派手机android版本,系统版本迎来升级
  7. appium java 点击事件_“按钮点击”在Appium Android测试中给出“处理命令时出现未知的服务器端错误 . ”...
  8. 【转载】.NET设计模式之抽象工厂模式(Abstract Factory)
  9. 10亿美元:MIT宣布建立计算学院,近70年来最大结构变革只为AI
  10. Atitit it系列书籍列表 C:\Users\Administrator\Documents\it 软件系列书籍\itlist.txt C:\Users\Administrator\Docume
  11. 中图分类法---- U 交通运输
  12. WIN7 Activation
  13. excel教程自学网_超实用!良心推荐15个神级自学网站,内容全面质量又高
  14. python爬虫学习爬取股票数据
  15. MathType注册表位置
  16. vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
  17. C语言度量代码质量常用指标,代码度量标准
  18. c++ tuling123_现代编译原理-图灵计算机科学丛书.pdf
  19. cgb2007-京淘day16
  20. AI:2020年6月23日北京智源大会演讲分享之AI创业专题论坛——10:30-11:20陆奇教授《AI创业发展趋势:机会与挑战》

热门文章

  1. [运算放大器系列]二、电压转4 - 20MA电流电路分析
  2. 拍拍贷2019Q1财报:核心用户转化率上升 迎战资本竞争力略显不足
  3. Elasticsearch:IP 数据类型及其搜索
  4. conime.exe
  5. IntelliJ IDEA 记学习笔《Patch 创建补丁》
  6. 联想硬盘保护系统 计算机名 后缀,联想硬盘保护系统,教您联想硬盘保护系统怎么安装...
  7. 什么是serialVersionUID?serialVersionUID详解
  8. 最新PHP小旋风站群系统源码Ver9.02+带安装教程
  9. 全志A31S源码编译
  10. 南京大学俞扬博士AIDL演讲全文:强化学习前沿(上)