当前位置:首页 >> 信息与通信 >>

NMEA协议相关


GPS(全球定位系统)接收机与手持机之间的数据交换格式一般都由生产厂商缺省定制,其定 义内容普通用户很难知晓,且不同品牌、不同型号的 GPS 接收机所配置的控制应用程序也 因生产厂家的不同而不同。所以,对于通用 GPS 应用软件,需要一个统一格式的数据标准, 以解决与任意一台 GPS 的接口问题。NMEA-0183 数据标准就是解决这类问题的方案之一。 NMEA 协议是为了在不同

的 GPS 导航设备中建立统一的 RTCM(海事无线电技术委员会)标 准,它最初是由美国国家海洋电子协会(NMEA—The NationalMarine Electronics Association) 制定的。NMEA 协议有 0180、0182 和 0183 这 3 种,0183 可以认为是前两种的升级,也是 目前使用最为广泛的一种 NMEA 通讯协议硬件接口 符合 NMEAO183 标准的 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 。 虽然存在区别,但在实际使用中,如果只是接收 GPS 的输出.则只需两根信号线 GPS 数据 输出线和信号地线,可以直接将 EIA-422 输出通道两条信号线的中一条同计算机的 Rs232C 输入线相连(这个方法我并没有试验过,是从别的地方听来的,有兴趣有条件的兄弟可以动 手实验一下,不过后果自负哦!呵呵) 。 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 当 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 语句中的信息的 时候按照字符的长度提取,这样编出来的程序,通用性差,而且经常会出现信息提取错误的 问题。 以上都是我们在程序中需要注意的问题。 为解决信息的正确提取问题, 并提高程序的复用性, 可以编写适当的函数,如一个函数用来分离语句(即通过$字符判断语句头,一直到换行回 车结束一条语句) ;一个函数用来判断语句中的字段数(通过“, ”分隔符来提取语句字段) , 还有一个函数用来返回语句中指定字段的内容。 有了这三个函数, 就可以方便的提取所需的 信息,此时的工作只是简单字符串比较和显示格式的变换 检验和的计算与比较 最后,为了确保所采集的 GPS 数据的可靠性,必须进行检验和的计算与比较。检验和 hh 为 “$”与“*”之间的所有字符按位异或的结果,并将其高 4 位和低 4 位各用一个十六进制数 (字母大写)表示出来。为此,需编写函数,从语句头识别符“*”开始,计算检验和,直至 “*”到达为止,这时“*”号后面的两个字符就是检验码,将自己的计算结果同这两个检验 码字符比较,若不同,按出错处理,并继续运行;若相同,则说明通讯成功,数据接收正确, 可以处理该语句,提取所需数据。 这里简单介绍了 NMEA 一 0183 规范的接口定义和数据格式,但是篇幅限制没有对 NMEA 语句进行详细的解析,语句的详细说明可参照 NMEA 规范或各 GPS 接收机的说明书。我现 在手中有一份中文版本的 NMEA 协议语句的详细解析,当然并不是全部的语句,是根据 GARMIN 技术手册翻译过来的,如果有兴趣了解的兄弟可以留下邮箱。

NMEA 协议语法
1) Global Positioning System Fix Data(GGA)GPS 定位信息 $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF> 例:$GPGGA,053152,3957.7484,N,11626.7626,E,1,06,1.5,88.1,M,-8.0,M,,*64 <1> UTC 时间,hhmmss(时分秒)格式 05+8=13 时 31 分 52 秒 <2> 纬度 ddmm.mmmm(度分)格式(前面的 0 也将被传输) 39 度 57.7487 分 <3> 纬度半球 N(北半球)或 S(南半球) 北半球 <4> 经度 dddmm.mmmm(度分)格式(前面的 0 也将被传输) 116 度 26.7626 分 <5> 经度半球 E(东经)或 W(西经) 东经 <6> GPS 状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算 非差分定位 <7> 正在使用解算位置的卫星数量(00~12) (前面的 0 也将被传输) 6 颗卫星 <8> HDOP 水平精度因子(0.5~99.9) 水平精度因子为 1.5 <9> 海拔高度(-9999.9~99999.9) 海拔 88.1 米 <10> 地球椭球面相对大地水准面的高度 地球椭球面相对大地水准面的高度为-8.0 米 <11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空 非定位差分 <12> 差分站 ID 号 0000~1023(前面的 0 也将被传输,如果不是差分定位将为空) 非定位差分 2) GPS DOP and Active Satellites(GSA)当前卫星信息 $GPGSA,<1>,<2>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<3>,<4>,<5>,<6>*hh<CR ><LF> <1> 模式,M=手动,A=自动 <2> 定位类型,1=没有定位,2=2D 定位,3=3D 定位 <3> PRN 码(伪随机噪声码) ,正在用于解算位置的卫星号(01~32,前面的 0 也将被传输) 。 <4> PDOP 位置精度因子(0.5~99.9) <5> HDOP 水平精度因子(0.5~99.9) <6> VDOP 垂直精度因子(0.5~99.9) 3) GPS Satellites in View(GSV)可见卫星信息 $GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,…<4>,<5>,<6>,<7>*hh<CR><LF> <1> GSV 语句的总数 <2> 本句 GSV 的编号 <3> 可见卫星的总数(00~12,前面的 0 也将被传输) <4> PRN 码(伪随机噪声码) (01~32,前面的 0 也将被传输)

<5> 卫星仰角(00~90 度,前面的 0 也将被传输) <6> 卫星方位角(000~359 度,前面的 0 也将被传输) <7> 信噪比(00~99dB,没有跟踪到卫星时为空,前面的 0 也将被传输) 注:<4>,<5>,<6>,<7>信息将按照每颗卫星进行循环显示,每条 GSV 语句最多可以显示 4 颗 卫星的信息。其他卫星信息将在下一序列的 NMEA0183 语句中输出。 4) Recommended Minimum Specific GPS/TRANSIT Data(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> 模式指示(仅 NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据 无效) 5) Track Made Good and Ground Speed(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> 模式指示(仅 NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无 效) 6) Geographic Position(GLL)定位地理信息 $GPGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7>*hh<CR><LF> <1> 纬度 ddmm.mmmm(度分)格式(前面的 0 也将被传输) <2> 纬度半球 N(北半球)或 S(南半球) <3> 经度 dddmm.mmmm(度分)格式(前面的 0 也将被传输) <4> 经度半球 E(东经)或 W(西经) <5> UTC 时间,hhmmss(时分秒)格式 <6> 定位状态,A=有效定位,V=无效定位 <7> 模式指示(仅 NMEA0183 3.00 版本输出,A=自主定位,D=差分,E=估算,N=数据无 效)

例: (一) $GPGGA,012440.00,3202.1798,N,11849.0763,E,1,05,2.7,40.2,M,0.5,M,,*6F.. 1 时间: 01+8=9 点 24 分 40.00 秒

2 纬度: 北纬 32 度 02.1798 分 3 经度: 东经 118 度 49.0763 分 4 定位: 1=(定位 sps 模式) 0=(未定位) 5 应用卫星数: 05 个 6 HDOP: 2.7 米 7 海拔: 40.2 8 海拔单位: M=(米) 9 WGS84 水准面划分: 0.5 10 WGS84 水准面划分单位 M(米) 11 12 校验位: 6F (二)$GPRMC,013946.00,A,3202.1855,N,11849.0769,E,0.05,218.30,111105,4.5,W,A*20.. 01 02 03 04 05 06 07 08 09 10 时间 01 时 39 分 46.00 秒 定位状态 A=可用 V=警告(不可用) 纬度: 北纬(N) 32 度 02.1855 分 经度: 东经(E) 118 度 49.0769 分 相对位移速度: 0.05 knots 相对位移方向: 218.30 度 日期: 11 日 11 月 05 年(日日月月年年)

检查位

(三)$GPGSA,A,3,01,03,14,20,,,,,,,,,2.6,2.5,1.0*35.. 01 模式 2: A=自动 M=手动 02 模式 1: 1=未定位 2=二维定位 3=三维定位 03 卫星编号: 01 到 32 04 PDOP-位置精度稀释:(2.6) 0.5--99.9 05 HDOP-水平经度稀释:(2.6) 0.5--99.9 06 VDOP-垂直经度稀释:(1.0) 0.5--99.9 07 检验位 35 (四)$GPGSV,2,1,08,01,62,160,42,03,23,189,42,06,23,049,32,14,24,150,35*78.. 01 天空中收到讯号的卫星总数 02 定位的卫星总数 03 天空中卫星总数 04 (01,62,160,42)分别是卫星编号 01-32,卫星仰角 00-90 度,卫星方位角 000-359 度,讯号噪声 比 00-99dB 以下类似(03,23,189,42) (06,23,049,32) (14,24,150,35) 05 Checksum 检查位*78


相关文章:
NMEA协议
NMEA协议_信息与通信_工程科技_专业资料。NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(...
NMEA协议相关
NMEA-0183 数据标准就是解决这类问题的方案之一。 NMEA 协议是为了在不同的 GPS 导航设备中建立统一的 RTCM(海事无线电技术委员会)标准,它最初是由美国国家海洋...
NMEA0183 协议
NMEA0183 协议_计算机软件及应用_IT/计算机_专业资料。GNSS NMEA 0813 标准数据...每种都是独立相关的 ASCII 格式,逗点隔开数据流,数据流长度从 30-100 字符不...
NMEA0183协议的介绍和解析
NMEA0183协议的介绍和解析_物理_自然科学_专业资料。GPS 数据遵循 NMEA-0183 协议, 该数据标准是由 NMEA (National Marine Electronics Association,美国国家海事电子...
NMEA协议
NMEA协议相关 5页 1财富值 NMEA协议 6页 5财富值 NMEA协议说明- v1.4 21页 免费 NMEA-0183协议 7页 5财富值 NMEA协议分析 4页 20财富值 NMEA-0183 协议解...
NMEA通讯协议详解
NMEA通讯协议详解_信息与通信_工程科技_专业资料。用简单易懂的语言,将gps专用通讯协议NMEA协议进行了分析,为该协议的解析和程序编写提供简明的编程思想。...
NMEA-0183协议说明(中文)
NMEA-0183协议说明(中文)_信息与通信_工程科技_专业资料。NMEA-0183协议说明书,根据英文翻译。NMEA-0183 协议说明 V2.20 2004 年 1 月注:因本人水平有限,难免...
NMEA-0183协议
NMEA-0183协议_信息与通信_工程科技_专业资料。所有GPS模块的数据格式 深圳市百年星科技有限公司 6.1.1 GGA 样例数据:$GPGGA,161229.487,3723.2475,N,12158....
GPS数据协议NMEA0183
NMEA0183 格式以“$”开始,主要 语句有 GPGGA,GPVTG,GPRMC 等 1、 GPS DOP and Active Satellites(GSA)当前卫星信息 $GPGSA,<1>,<2>,<3>,<3>,,,<3>,...
GPS_NMEA-0813协议详解
GPS_NMEA-0813协议详解_计算机软件及应用_IT/计算机_专业资料。gps-nmea-0813协议汇总详解GPS NMEA-0183 协议详解 NMEA 协议是为了在不同的 GPS (全球定位系统) ...
更多相关标签:
nmea0183协议 | nmea0183协议解析源码 | nmea协议 | nmea2000协议 | nmea0183协议中文 | nmea0183协议 pdf | nmea协议解析程序 | nmea0183协议 4.10 |