什么是GPS?

GPS是英文Global Positioning System(全球定位系统)的简称。GPS起始于1958年美国军方的一个项目,1964年投入使用。20世纪70年代,美国陆海空三军联合研制了新一代卫星定位系统GPS 。
主要目的是为陆海空三大领域提供实时、全天候和全球性的导航服务,并用于情报搜集、核爆监测和应急通讯等一些军事目的,经过20余年的研究实验,耗资300亿美元,到1994年,全球覆盖率高达98%
的24颗GPS卫星星座己布设完成。在机械领域GPS则有另外一种含义:产品几何技术规范(Geometrical Product Specifications, 简称GPS)。另外一种含义为G/s(GB per second)。
GPS(Generalized Processor Sharing)广义为处理器分享,网络服务质量控制中的专用术语。
利用GPS定位卫星,在全球范围内实时进行定位、导航的系统,称为全球卫星定位系统,简称GPS。GPS是由美国国防部研制建立的一种具有全方位、全天候、全时段、高精度的卫星导航系统,能为全球用户提供低成本、高精度的三维位置、速度和精确定时等导航信息,是卫星通信技术在导航领域的应用典范,它极大地提高了地球社会的信息化水平,有力地推动了数字经济的发展。

NMEA协议

GPS(全球定位系统)接收机与手持机之间的数据交换格式一般都由生产厂商缺省定制,其定义内容普通用户很难知晓,且不同品牌、不同型号的GPS接收机所配置的控制应用程序也因生产厂家的不同而

不同。所以,对于通用GPS应用软件,需要一个统一格式的数据标准,以解决与任意一台GPS的接口问题。NMEA-0183数据标准就是解决这类问题的方案之一。NMEA协议是为了在不同的GPS导航设备中

建立统一的RTCM(海事无线电技术委员会)标准,它最初是由美国国家海洋电子协会(NMEA—The NationalMarine Electronics Association)制定的。NMEA协议有0180、0182和0183这3种,0183可

以认为是前两种的升级,也是目前使用最为广泛的一种

NMEA通讯协议所定义的标准通讯接口参数为:
波特率:4800bit/s;
数据位:8位;
停止位:1位;
奇偶校验:无;

NMEA-OI83语句解析
NMEA通讯协议所规定的通讯语句都已是以ASCII码为基础的,NMEA-0183协议语句的数据格式如下:

“$”为语句起始标志;

“,”为域分隔符;

“ *”为校验和识别符;

其后面的两位数为校验和,代表了“$”和“*”之间所有字符的按位异或值(不包括这两个字符);“/”为终止符,所有的语句必须以“/”结束,也就是ASCII 字符的“回车”(十六进制的0D)和“换行”(十六进制的0A)。
典型的NMEA0183语句如下面的GPGGA语句。

当GPS正常工作时,语句如:
$GPGGA,053152,3957.7484,N,11626.7626,E,1,06,1.5,88.1,M,-8.0,M,,*64
该数据帧的结构及各字段释义如下:
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>
GPGGA是GPS数据输出格式语句,意思是一帧GPS定位的主要数据,是NMEA格式中使用最广的数据之一。该语句包括17个字段。
$GPGGA:起始引导符及语句格式说明(本句为GPS定位数据);
<1> UTC时间,格式为hhmmss.sss;
<2> 纬度,格式为ddmm.mmmm(第一位是零也将传送);
<3> 纬度半球,N或S(北纬或南纬);
<4> 经度,格式为dddmm.mmmm(第一位零也将传送);
<5> 经度半球,E或W(东经或西经);
<6> GPS状态, 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算 7,人工输入固定值, 8模拟模式, 9WAAS差分;
<7> 使用卫星数量,从00到12(第一个零也将传送);

<8> HDOP-水平精度因子,0.5到99.9,一般认为HDOP越小,质量越好;

<9> 海拔高度,-9999.9到9999.9米;      M 指单位米

<10> 大地水准面高度异常差值,-9999.9到9999.9米;  M 指单位米

<11> 差分GPS数据期限(RTCM SC-104),最后设立RTCM传送的秒数量,如不是差分定位则为空;

<12> 差分参考基站标号,从0000到1023(首位0也将传送);

* 语句结束标志符

xx 从$开始到*之间的所有ASCII码的异或校验;

<CR> 回车符,结束标记;

<LF> 换行符,结束标记

当GPS收不到卫星信号时,GPGGA语句输出变为:
$GPGGA,053247,3957.7484,N,11626.7626,E,0,00,,,M,,M,,*46
除标准语句外,NMEAO183规范还允许个别厂商定义私有的语句格式,这些语句以“$P”开始,然后是三个字符长度的厂商识别号,跟着是厂商定义的数据,接下来的数据格式与标准格式相同。
如Garmin的PGRME私有格式如下:
$PGRME,8.9,M,6.1,M,10.8,M*11
其中,“P”代表私有格式,“GRM”是Garmin的代码,“E”表示语句类型。

NMEA数据处理中的注意事项
如果开发基于GPS的应用系统,就需要将GPS作为信息源,正确接收和解析GPS发送的NMEA一0183数据。此时,在编程实现时需要注意几个问题。
1、通讯端口的设置
虽然NMEA规范推荐的串行通讯参数为“波特率:4800;奇偶校验:无;数据位:8;停止位:1”,但也有厂商的产品允许用户将波特率设置的更高,此时需要注意设置计算机的接口参数与GPS设备一致。

2、 所需信息的正确提取
NMEA—O183是以语句形式发送数据的,接收机可能发送很多类型的语句,而我们需要的可能只是某些语句中的几个字段。因此就需要对接收到的数据进行解析,取得所需的信息。另外,可能会由于

小数点位数不同等原因,语句的长度是可变的,因而分离感兴趣的信息时,不能按照该信息在语句中所处的字符位置来查找,只能依据逗号分隔符,这一点在数据提取的过程中非常重要。笔者就经常遇

到一些应用软件工程师,在提取NMEA语句中的信息的时候按照字符的长度提取,这样编出来的程序,通用性差,而且经常会出现信息提取错误的问题。

以上都是我们在程序中需要注意的问题。为解决信息的正确提取问题,并提高程序的复用性,可以编写适当的函数,如一个函数用来分离语句(即通过$字符判断语句头,一直到换行回车结束一条语句)

一个函数用来判断语句中的字段数(通过“,”分隔符来提取语句字段),还有一个函数用来返回语句中指定字段的内容。有了这三个函数,就可以方便的提取所需的信息,此时的工作只是简单字符串比

较和显示格式的变换检验和的计算与比较

3、最后,为了确保所采集的GPS数据的可靠性,必须进行检验和的计算与比较

检验和hh为“$”与“*”之间的所有字符按位异或的结果,并将其高4位和低4位各用一个十六进制数(字母大写)表示出来。

为此,需编写函数,从语句头识别符“*”开始,计算检验和,直至“*”到达为止,这时“*”号后面的两个字符就是检验码,将自己的计算结果同这两个检验码字符比较,若不同,按出错处理,并继续运行;

若相同,则说明通讯成功,数据接收正确,可以处理该语句,提取所需数据。

GPS通信协议——最常用的NMEA0183协议相关推荐

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

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

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

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

  3. GPS NMEA-0183协议详解

    NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronic ...

  4. NMEA-0183 协议 ——GPS芯片输出标准格式

    NMEA 协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会( NMEA-The National MarineElectroni ...

  5. GPS 入门 4 —— GPS NMEA-0183协议 [转]

    GPS 入门 4 -- GPS NMEA-0183协议 [转] (2008-10-11 18:42:39) <script> var $tag='gps,nmea-0183协议,超级终端, ...

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

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

  7. 【GPS - NMEA-0183协议】

    GPS - NMEA-0183协议 NMEA-0183协议标准 1. 协议格式 2. 常见的GPS数据协议格式 2.1 GGA 2.2 GSA 2.3 GSV 2.4 RMC 2.5 VTG 2.6 ...

  8. python模拟gps定位_python解析nmea0183协议获取GPS定位信息

    python解析nmea0183协议获取GPS定位信息 nmea0183协议里面定位数据主要在GPRMC报文里面,下面是报文的大体形式: b'$GPRMC,111025.00,A,2517.03374 ...

  9. 一文读懂 NMEA-0183 协议数据

    NMEA 是 National Marine Electronics Association 的缩写,是美国国家海洋电子协会的简称,现在是 GPS 导航设备统一的 RTCM 标准协议.NMEA-018 ...

最新文章

  1. 我不曾忘记的初心-冒险努力正是你缺少的!
  2. 【Tools】Xshell6安装和卸载图解教程
  3. MySQL查询不到中文的问题
  4. 你了解node多进程吗
  5. 自定义事件(如未作说明,本博客文档都是用C#代码)
  6. 【源码】深入 Java 集合系列之 ArrayList 源码解读
  7. iOS游戏开发梦想成真:神奇的GameSalad
  8. Linux | 如何通过Xshell上传文件到Linux
  9. 图像处理—灰度图像转为伪彩色图像
  10. mysql odbc 免安装_MySQL免安装版配置
  11. python画正弦函数_python中怎么用matlibplot画正弦曲线
  12. 路由器ACL(访问控制列表)详解
  13. 在Word、WPS中插入AxMath公式导致行间距异常的解决办法
  14. 浙江印发政府数字化转型工作方案,多处提及电子签名、签章、印章
  15. 某zhan sign
  16. 【Niagara Vykon N4 】物联网学习 01 Station创建
  17. ubuntu(18.04)磁盘空间不足导致问题:bash: 无法为立即文档创建临时文件: 设备上没有空间(按tab键无法自动补全)
  18. 【python机器学习】——patsy的简介、安装、使用方法之详细攻略
  19. a job is a job
  20. 【数据中心管理】服务器的1U、2U是什么意思?42U机柜可以放多少台服务器

热门文章

  1. p2p mysql 数据的拆分 案例_浅析: P2P网贷系统数据库设计
  2. 【Docker入门使用】
  3. docker入门_Docker入门
  4. 触摸屏显示接口设计-用于便携式热像仪的OMAP双核处理器
  5. 判断url链接是否有效的几种方法
  6. 用python来玩科学计算
  7. VISTA或WIN7下使用立体声混音作为录音来源时,如何通过编程方式去除或加入麦克风的输入
  8. 理解ODBC:DSN、ODBC管理器、驱动程序
  9. 玩转二叉链表 PTA(JAVA)
  10. 解答:C语言中结构体的定义中,后面跟的“结构体变量”到底是什么?