当前位置: 首页 > 编程日记 > 正文

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

点击上方蓝字[协议分析与还原]关注我们

 整理的GPS有关的协议分析资料。


之前分析一些车载设备的流量时,有部分经验,在这里和大家分享。


产生这些流量的设备通常是实体终端设备,里面装有处理芯片,与GPS通信,也通过运营商的网络,与服务器通信,将设备状态和位置这些数据传递到服务器保存。


这些设备与服务器通信,数据没有那么复杂,一般直接使用TCP/IP封装GPS协议内容进行,服务器只需要相应解析即可获得各项内容,降低了设计开发成本。


GPS协议标准目前常用到的是NMEA-0183,很显然,这是由NMEA发布的一个标准。


NMEA是National Marine Electronics Association ,即美国国家海洋电子协会的缩写,NMEA是GPS的管理者,为方便GPS的推广应用,发布了一系列GPS协议的标准格式。

NMEA-0183就是GPS协议标准的一个,它的早期版本为NMEA-0180和NMEA-0182。虽然它现在仍然用得很多,但时光的车轮在前进,它将会逐渐被最新的NMEA 2000所替代。



NMEA-183是一个基于ASCII的串行通信协议,它由一个个的语句组成,理解起来很简单。


下面对它的一些常用的语句进行举例说明,这些,是协议分析中会碰到的。


这些常用的NMEA-0183语句如下:


GPGGA(定位信息)


$GPGGA,HHMMSS.SS,DDMM.MMMM,S,DDDMM.MMMM,S,N,QQ,PP.P,SAAAAA.AA,M,±XXXX.XX,M,SSS,AAAA*CC

例:

$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,M,19.7,M,,,0000*1F

字段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=不可用(FIX NOT valid),1=单点定位(GPS FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK FIX),5=RTK FLOAT,6=正在估算

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

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

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

字段10:单位:M(米)

字段11:地球椭球面相对大地水准面的高度 WGS84水准面划分

字段12:WGS84水准面划分单位:M(米)

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

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

字段15:校验值


GPGSA(当前卫星信息)


$GPGSA,A,B,CC,DD,EE,FF,GG,HH,II,JJ,KK,MM,NN,OO,P.P,Q.Q,R.R*CC

例:

$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A

字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息

字段1:定位模式(选择2D/3D),A=自动选择,M=手动选择

字段2:定位类型,1=未定位,2=2D定位,3=3D定位

字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)

字段15:PDOP综合位置精度因子(0.5 - 99.9)

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

字段17:VDOP垂直精度因子(0.5 - 99.9)

字段18:校验值


GPGSV(可见卫星信息)


$GPGSV,T,M,N,II,EE,AAA,SS,…II,EE,AAA,SS,*CC

例:

$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70

字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息

字段1:本次GSV语句的总数目(1 - 3)

字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)

字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)

字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)

字段5:卫星仰角(00 - 90)度(前导位数不足则补0)

字段6:卫星方位角(00 - 359)度(前导位数不足则补0)

字段7:信噪比(00-99)dbHz

字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)

字段9:卫星仰角(00 - 90)度(前导位数不足则补0)

字段10:卫星方位角(00 - 359)度(前导位数不足则补0)

字段11:信噪比(00-99)dbHz

字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)

字段13:卫星仰角(00 - 90)度(前导位数不足则补0)

字段14:卫星方位角(00 - 359)度(前导位数不足则补0)

字段15:信噪比(00-99)dbHz

字段16:校验值


GPRMC(推荐定位信息数据格式)


$GPRMC,HHMMSS.SS,A,DDMM.MMM,N,DDDMM.MMM,W,Z.Z,Y.Y,DDMMYY,D.D,V*CC

例:

$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50

字段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

字段8:方位角,度

字段9:UTC日期,DDMMYY格式

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

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

字段16:校验值


GPVTG(地面速度信息)


$GPVTG,TTT,C,TTT,C,GGG.GG,U,GGG,GG,U*CC

例:

$GPVTG,89.68,T,,M,0.00,N,0.0,K*5F

字段0:$GPVTG,语句ID,表明该语句为Track Made Good and Ground Speed(VTG)地面速度信息

字段1:运动角度,000 - 359,(前导位数不足则补0)

字段2:T=真北参照系

字段3:运动角度,000 - 359,(前导位数不足则补0)

字段4:M=磁北参照系

字段5:水平运动速度(0.00)(前导位数不足则补0)

字段6:N=节,Knots

字段7:水平运动速度(0.00)(前导位数不足则补0)

字段8:K=公里/时,km/h

字段9:校验值


GPGLL(地理定位信息)


$GPGLL,DDMM.MMMM,S,DDDMM.MMMM,S,HHMMSS.SS,S*CC

例:

$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D

字段0:$GPGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息

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

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

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

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

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

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

字段7:校验值





资料就这些了,希望对大家有帮助。


640?wx_fmt=jpeg

长按进行关注,时刻进行交流。



点击“在看”,与朋友一起分享↘


相关文章:

【tyvj1052】【树状dp】没有上司的舞会

描述 Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员…

java中memcached

http://www.oschina.net/code/snippet_250396_9181 转载于:https://www.cnblogs.com/suifengbingzhu/p/3737053.html

01内存管理-概述

内存管理 内存消耗内存管理模型语言架构减少内存使用的实践 1 内存消耗 栈大小 每一个线程都有专有的栈空间,栈内存在线程存在期间自由使用。 每一个函数都有其自己的栈帧,所有的变量都会载入到方法的栈帧中,并且消耗一定的内存。 &…

linux下unzip解压报错“symlink error: File name too long”怎么办?提供解决方案。

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分享unzip工具的一个bug。”最近在研究菠菜站,中间用到了Spidermonkey,碰到一些小波折,在这里分享出来,以便大家快速跳坑。从全球最大的男性交友网站GitHub上把Spidermonkey-master…

EF-Linq将查询结果转换为Liststring

List<int> id_list new List<int>() { 1 };//测试数据...List<string> guid_list (from uinfo in db.UserInfowhere id_list.Contains(uinfo.ID)select new{uid uinfo.Guid}).ToList().Select(u > u.uid).ToList<string>(); 转载于:https://www.c…

hdu 2594 kmp

这个题和kmp算法的共同点&#xff0c;也就是可以用kmp解的原因&#xff0c;在于当前缀所在串&#xff08;kmp中的模式串&#xff09;字符pj≠后缀所在串(kmp中文本串)字符tj时&#xff0c;应使前缀串(kmp中模式串)尽量往右移动最大位移&#xff0c;而暴力算法则是每次移动位移为…

途游斗地主加密协议分析及破解

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析途游斗地主的加密协议。”作为一个手机棋牌游戏厂商&#xff0c;途游是排得上号的&#xff0c;它的途游斗地主一直很火热&#xff0c;隐约记得&#xff0c;这个厂商一直在搞斗地主的全国竞技赛事&#xff0c;并蹭上了体育总局…

URI、URL以及URN的区别

首先&#xff0c;URI&#xff0c;是uniform resource identifier&#xff0c;统一资源标识符&#xff0c;用来唯一的标识一个资源。而URL是uniform resource locator&#xff0c;统一资源定位器&#xff0c;它是一种具体的URI&#xff0c;即URL可以用来标识一个资源&#xff0c…

[转]使用设计模式改善程序结构(二)

使用设计模式改善程序结构&#xff08;二&#xff09; 在本系列的 第一篇文章中&#xff0c;描述了如何通过设计模式来指导我们的程序重构过程&#xff0c;并且着重介绍了设计模式意图、动机的重要性。在本文中我们将继续上篇文章进行讨论&#xff0c;这次主要着重于设计模式的…

iOS arm 64 的了解

ARM 简介&#xff1a;ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。百度介绍 iOS设备中的处理器都是基于ARM架构的。 arm设备真机i386&#xff08;iphone5,iphone5s以下的模拟器&#xff09;x86_64(iphone6以上的模拟器…

wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍TCP排序方法&#xff0c;分享一个Windows版的TCP排序工具。” 在分析协议的过程中&#xff0c;不可避免地需要抓包。 无论抓包条件如何优越&#xff0c;无论Windows下使用wireshark还是Linux下使用tcpdump&#xff0c;无论是…

USACO JANUARY——矩形[rects]

Description 给出N个矩形(1≤N≤100)和它的长和宽(不超过1000)&#xff0c;写一个程序找出最大的K&#xff0c;使得有K个矩形满足层层包含的关系&#xff0c;即里层的矩形被所有外层的矩形包含&#xff0e;一个矩形P1包含另一个矩形P2&#xff0c;则P2的一边小于P1的一边&#…

ORACLE分页SQL

ORACLE分页SQL 1&#xff0c;使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM < 40 ) WHERE RN > 21 2&#xff0c;使用between SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) W…

01-基本概念

GCD 1 基本概念 概念&#xff1a; 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务 优点 多核并行运算不需要手动管理线程生命周期自动利用CPU的内核 两个基本点…

cocos2d游戏jsc文件格式解密,SpideMonkey大冒险

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 介绍cocos2d游戏中常用的jsc格式文件的解密。” 01 — 在破解游戏应用中&#xff0c;经常会碰到后缀为jsc的文件&#xff0c;这是基于cocos2d开发的游戏的加密代码&#xff0c;本质上是js文件&#xff0c;只是被加密了。 例如之前…

02-dispatch_barrier

1 dispatch_barrier_async 概念 栅栏方法&#xff0c;暂时的将一部操作做成一个同步操作&#xff0c;向一个栅栏一样的分开 dispatch_barrier_async函数的作用是在进程管理中起到一个栅栏的作用,它等待所有位于barrier函数之前的操作执行完毕后执行,并且在barrier函数执行之后…

sqljdbc.jar 和 sqljdbc4.jar

从微软官网下载的Sql server2008的JDBC jar包&#xff0c;解压后里面有两个jar包&#xff08;sqljdbc.jar 和 sqljdbc4.jar&#xff09;。到底应该用哪个呢&#xff1f; 地址&#xff1a; http://www.microsoft.com/downloads/details.aspx?FamilyIDa737000d-68d0-4531-b65d-d…

综合性深入的技术文章-20161103

已读文章&#xff1a; SqlServer性能检测和优化工具使用详细 百万级访问网站前期的技术准备 从100PV到1亿级PV网站架构演变 待阅读&#xff1a; 从0到千万级访问量网站架构演变史 memcached全面剖析–5. memcached的应用和兼容程序 PHP解决网站大流量与高并发 NGINX防御CC攻击教…

头条小视频和西瓜视频signature签名算法

点击上方↑↑↑蓝字[协议分析与还原]关注我们“分析今日头条内小视频和西瓜视频分享后浏览器打开所用的signature签名算法。” 上月写的一篇关于使用微信的wxid加好友的文章&#xff0c;竟然无意间碰到了一个微信搜索黑洞&#xff0c;成就了本号有史以来搜索量、阅读量、关注度…

一个winform带你玩转rabbitMQ

源码已放出 https://github.com/dubing/MaoyaRabbit 本章分3部分 一、安装部署初探 二、进阶 三、api相关 安装 部署 初探 先上图 一. 安装部署 下载 rabbitMQ &#xff1a;http://www.rabbitmq.com/download.html 安装rabbitmq需要erlang&#xff0c;下载erlang&#xff1a;ht…

03-dispatch_after

1 dispatch_after 概念 在指定时间之后将任务追加到主队列中。严格来说&#xff0c;这个时间并不是绝对准确的&#xff0c;但想要大致延迟执行任务&#xff0c;dispatch_after函数是很有效的。 NSLog("currentThread---%",[NSThread currentThread]); // 打印当前线…

C#模糊查询绑定datagridview

private CollectionViewSource wgdData new CollectionViewSource(); private DataTable Ds_wgd { get { return this.dgv_wgd.ItemsSource as DataTable; } set { wgdData.Source value; this.dgv_wgd.ItemsSource ((DataTable)wgdData.Source).DefaultView; } } //文本框修…

今日头条反爬措施形同虚设,论多平台协同在安全方面的重要性

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 玩头条练技能。”大家好&#xff0c;看到标题一定猜到了&#xff0c;我又来玩今日头条了&#xff0c;谁让它是东半球文明的杀时间神器呢。 想当年&#xff0c;头条刚问世&#xff0c;正愁长辈看新闻没合适且方便的工具&#xff0…

ueditor编辑器和at.js集成

源码&#xff1a; <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <%//禁止jsp解析${} %> <% page isELIgnored"true"%> <%String path request.getContextPath();String basePath reques…

Java缓存学习之五:spring 对缓存的支持

&#xff08;注意标题&#xff0c;Spring对缓存的支持 这里不单单指Ehcache &#xff09;   从3.1开始&#xff0c;Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的&#xff0c;其核心思想是这样的&#xff1a;当…

04-dispatch_group

dispatch_group 实现线程同步 比如说&#xff0c;第一步我想先下载三张图片&#xff0c;然后第二步再去主线程刷新imgview 显示图片。 利用dispatch_group 来进行实现 &#xff0c;简单来讲就四行代码. 就可以让代码按照你想要的顺序进行发生。 使用步骤 创建一个dispatch_g…

fiddler教程:抓包带锁的怎么办?HTTPS抓包介绍。

点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 介绍Fiddler的HTTPS抓包功能。” 这里首先回答下标题中的疑问&#xff0c;fiddler抓包带锁的原因是HTTPS流量抓包功能开启&#xff0c;但解密功能未开启导致&#xff0c;只需要将HTTPS流量解密功能开启就能解决问题。01—作为一款…

如何实现后台向前台传数据

技术交流群&#xff1a;233513714 这两天正在研究如何让后天主动向前台展现数据&#xff0c;只要后台有数据上传的时候就向前台上传(因为公司有个项目&#xff0c;硬件设备会不断的上传数据&#xff0c;服务端将接收到的数据向前台展示)。在网上查了一下&#xff0c;下面将介绍…

05-dispatch_semphore

dispatch_semphore 信号量 dispatch_semaphore信号量为基于计数器的一种多线程同步机制。如果semaphore计数大于等于1&#xff0c;计数-1&#xff0c;返回&#xff0c;程序继续运行。如果计数为0&#xff0c;则等待。dispatch_semaphore_signal(semaphore)为计数1操作,dispatc…

[leetcode]_Integer to Roman

题目&#xff1a;对应之前那道将罗马数字转换整型数字的题目。反过来。 思路&#xff1a;刚开始做的时候&#xff0c;想着用程序进行判断&#xff0c;复杂的要死。网络了别人代码&#xff0c;非常清晰。 代码&#xff1a; 1 public String intToRoman(int num) {2 S…