nmea通讯协议详解

上传人:xzh****18 文档编号:33854372 上传时间:2018-02-18 格式:DOCX 页数:3 大小:16.86KB
返回 下载 相关 举报
nmea通讯协议详解_第1页
第1页 / 共3页
nmea通讯协议详解_第2页
第2页 / 共3页
nmea通讯协议详解_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《nmea通讯协议详解》由会员分享,可在线阅读,更多相关《nmea通讯协议详解(3页珍藏版)》请在金锄头文库上搜索。

1、NMEA 通讯协议详解说起 NMEA 协议,只要接触过 GPS 设备的人,或者说是要用到 GPS 设备研发的人都知道,这是一个很常用的 GPS 通讯协议,而且也有很多人遇到关于 NEMA 协议的一些问题,我忽然有一个想法,就是按照自己对这个协议的一些理解,写一点这方面的东西,看是不是能帮刚刚入门的人解答一些疑问,由于笔者水平有限,这个东西也只能算是一个简单介绍,就算是知识普及吧,希望能引高手出来大家一起讨论。好了,言归正传,我们开始吧!GPS(全球定位系统)接收机与手持机之间的数据交换格式一般都由生产厂商缺省定制,其定义内容普通用户很难知晓,且不同品牌、不同型号的 GPS 接收机所配置的控制应

2、用程序也因生产厂家的不同而不同。所以,对于通用 GPS 应用软件,需要一个统一格式的数据标准,以解决与任意一台 GPS 的接口问题。NMEA-0183 数据标准就是解决这类问题的方案之一。NMEA 协议是为了在不同的 GPS 导航设备中建立统一的 RTCM(海事无线电技术委员会)标准,它最初是由美国国家海洋电子协会(NMEAThe NationalMarine Electronics Association)制定的。NMEA 协议有 0180、0182 和 0183 这 3 种,0183 可以认为是前两种的升级,也是目前使用最为广泛的一种NMEA 通讯协议硬件接口符合 NMEAO183 标准的

3、 GPS 接收机的硬件接口能够兼容计算机的 RS-232C 协议串口,然而,严格来说 NMEA 标准不是 RS-232C,规范推荐依照 EIA422(也称为 RS-422)。是一个与 RS-232C 不同的系统。标准 RS-232C 采用负逻辑,即逻辑“1”表示-5V -15v,逻辑“0”表示+5V+15V,利用传输信号线和信号地之间的电压差进行传输。而 EIA-422 是利用导线之间的信号电压差来传输信号的,其每个通道要用两条信号线,一条是逻辑“1”,条是逻辑“0”,通过传输线驱动器和传输线接收器实现逻辑电平和电位差之间的转换,一般允许驱动器输出为2V 6V 。虽然存在区别,但在实际使用中,

4、如果只是接收 GPS 的输出则只需两根信号线 GPS 数据输出线和信号地线,可以直接将 EIA-422 输出通道两条信号线的中一条同计算机的Rs232C 输入线相连(这个方法我并没有试验过,是从别的地方听来的,有兴趣有条件的兄弟可以动手实验一下,不过后果自负哦!呵呵) 。NMEA 通讯协议所定义的标准通讯接口参数为:波特率:4800bit/s;数据位:8 位;停止位:1 位;奇偶校验:无;NMEA-OI83 语句解析NMEA 通讯协议所规定的通讯语句都已是以 ASCII 码为基础的, NMEA-0183 协议语句的数据格式如下:“$”为语句起始标志; “, ”为域分隔符;“ *”为校验和识别符

5、,其后面的两位数为校验和,代表了“$”和“*” 之间所有字符的按位异或值(不包括这两个字符) ;“ ”为终止符,所有的语句必须以来结束,也就是 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当 GPS 收不到卫星信号时,GPGGA 语句输出变为:$GPGGA,053247,3957.7484,N,11626.7626,E,0,00,M,M,*

6、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

7、规范推荐的串行通讯参数为“波特率:4800;奇偶校验:无;数据位: 8;停止位:1”,但也有厂商的产品允许用户将波特率设置的更高,此时需要注意设置计算机的接口参数与 GPS 设备一致。2、 所需信息的正确提取NMEA0183 是以语句形式发送数据的,接收机可能发送很多类型的语句,而我们需要的可能只是某些语句中的几个字段。因此就需要对接收到的数据进行解析,取得所需的信息。另外,可能会由于小数点位数不同等原因,语句的长度是可变的,因而分离感兴趣的信息时,不能按照该信息在语句中所处的字符位置来查找,只能依据逗号分隔符,这一点在数据提取的过程中非常重要。笔者就经常遇到一些应用软件工程师,在提取 NME

8、A 语句中的信息的时候按照字符的长度提取,这样编出来的程序,通用性差,而且经常会出现信息提取错误的问题。以上都是我们在程序中需要注意的问题。为解决信息的正确提取问题,并提高程序的复用性,可以编写适当的函数,如一个函数用来分离语句(即通过$字符判断语句头,一直到换行回车结束一条语句) ;一个函数用来判断语句中的字段数(通过“, ”分隔符来提取语句字段) ,还有一个函数用来返回语句中指定字段的内容。有了这三个函数,就可以方便的提取所需的信息,此时的工作只是简单字符串比较和显示格式的变换检验和的计算与比较最后,为了确保所采集的 GPS 数据的可靠性,必须进行检验和的计算与比较。检验和 hh为“$”与

9、“*”之间的所有字符按位异或的结果,并将其高 4 位和低 4 位各用一个十六进制数(字母大写)表示出来。为此,需编写函数,从语句头识别符“*” 开始,计算检验和,直至“*”到达为止,这时“*”号后面的两个字符就是检验码,将自己的计算结果同这两个检验码字符比较,若不同,按出错处理,并继续运行;若相同,则说明通讯成功,数据接收正确,可以处理该语句,提取所需数据。这里简单介绍了 NMEA 一 0183 规范的接口定义和数据格式,但是篇幅限制没有对 NMEA语句进行详细的解析,语句的详细说明可参照 NMEA 规范或各 GPS 接收机的说明书。我现在手中有一份中文版本的 NMEA 协议语句的详细解析,当然并不是全部的语句,是根据GARMIN 技术手册翻译过来的,如果有兴趣了解的兄弟可以留下邮箱。以上这些文字,是 AKA 按照自己对 NMEA 协议的的理解,再加上一点东找西看来的东西写出来的,如对其中的问题有疑问,欢迎探讨!邮箱地址:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业合同/协议

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号