文档库 最新最全的文档下载
当前位置:文档库 › RM2016DBUS协议完全解析

RM2016DBUS协议完全解析

提要:本文主要内容为DBUS协议的解析与相关的编程建议和部分代码。

首先,大家应该都知道DBUS协议是232电平的,而我们的单片机是TTL电平,所以在你刚拿到心爱的遥控器和接收机时,他们是不能直接接上单片机使用的,信号需要先经过一次处理,也就是电平要先被反向。反向的方法很多,三极管/光耦/门电路等等。最简单的方法自然是用三极管,下面附上电路图,不做赘续。

图注:电平取反电路(232电平转TTL电平)

如果你的取反电路做好了,那么恭喜你,你可以开始研究接收器的数据流了。让我们拿出USB 转串口小模块,将电路连接好,看一看接收器接收到的数据流。参数设定为波特率100000,停止位1,数据位8,偶校验,16进制显示。

图注:USB转串口模块,电平取反模块,接收器及遥控器连接

图注:接收器配置及其接收到的数据流

让我们抽取其中一段数据:

00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78 00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78 00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78 00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78 00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78 00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78 00 00 00 00 00 00 00 00 00 00 00 00 00 04 20 00 01 78

重复的数据段持续出现,说明数据流的规律已经被找到了。拨动摇杆,数据有改变但18个数据为一帧数据始终不变。找出了具体每帧的数据,那么我们就可以按帧来抽出数据进行下一步的研究了。

一帧数据的构成:

一帧数据共有18个2位16进制数,即18个字节构成,让我们随意抽取一帧将其编号为0~17位,每个字节为1位,记录相对应的数据并列出一张表:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (位)00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68 (数据)

【注:为了下面的解说,我将通道0拨到了最左边,这是为了避免第12位为00的问题。】经过反复的对比试验,得出的结论是前12位(0位~11位)始终为00,这点要牢牢记住因为与商用版DBUS协议中所规定的【每帧数据以00开头以0F结尾】不同的是,RM版的DBUS 协议并没有起始帧和结束帧,所以我们在处理数据流时,这一串的00是我们判断数据的开

始与结束的唯一手段。帧的开始与结束问题的具体细节在后面程序部分会提到,先让我们来看各通道数据的处理。

我们先将上面那一帧数据中的有效部分抽出来并写成二进制的格式:

6C 01 20 00 01 68 01101100 00000001 00100000 00000000 00000001 01101000 然后我们要对各通道的进行分割重组。根据协议,CH0~CH3每个通道为11位二进制,CH4~CH5每个通道为2位二进制。再根据DBUS的构成规则,我们可以作如下分割并命名为DATA0~5:6C(DATA0) 01(DATA1) 20(DATA2) 00(DATA3) 01(DATA4) 68(DATA5) 01101100 00000001 00100000 00000000 00000001 01101000

CH0:高3位为DATA1的低3位,低8位为DATA0的全8位;

CH1:高6位为DATA2的低6位,低5位为DATA1的高5位;

CH2:高1位为DATA4的低1位,中8位为DATA3的全8位,低2位为DATA2的高2位;

CH3:高4位为DATA5的低4位,低7位为DATA4的高7位;

CH4:全2位为DATA5的高2位;

CH5:全2位为DATA5的中2位。

如果还不理解,那么没关系,我把具体移位用线和箭头画了出来:

6C 01 20 00 01 68

01101100 00000001 00100000 00000000 00000001 01101000

CH0 00101101100=364CH1 10000000000=1024

CH2 10000000000=1024CH3 10000000000=1024

CH4 01=1 CH5 10=2

用一句话概括起来就是:

DATA中的低位位于较前的通道中的较高位,高位位于较后通道中的较低位。即分割DATA 时,我需要多少位,就从后往前数多少位;但读取时,从有这个通道的数据的最后方的DATA 开始往最前方的DATA读,但读取具体数字的顺序仍为从左到右。

放到程序里说,我们的处理方法一般分两种:DMA与读BUF。在我个人的理解中:DMA的好处是:我接收到的串口数据中包含的通道数据是先来低位再来高位的,用DMA 就可以很方便的将各通道数据从底部(低位)往顶部(高位)堆,一帧数据结束时我的数组

也堆满了,就可以送去给相关的函数处理了。

读取BUF的好处是:处理时每一步都有清晰易懂的逻辑性,虽然处理消耗资源多且耗时,但是编程逻辑简单,语法简单。

一开始我在写DBUS程序的时候并没有各类资料,只有张数据结构图,所以我用的是读取BUF 的方法。我的程序的具体操作为:建立一个[6][8]数组【注:[6]个DATA的[8]位二进制】,在每一帧数据接受完成后将各DATA的数据转为二进制并按位存进数组。

很简单的逻辑,二位十六进制变为了八位二进制。

【注:Keil中,十六进制和十进制本质是一样的,不同之处只在于表达形式是十六进制还是八进制,故直接调用就好了,无需进行16=>8的进制转化,然而Keil中没有二进制,故不得不用此方法将其转化为二进制。】

然后,我们按照前文中的分析整理规则,将各数字重新按各自应有的位置转化为十进制就能得到需要的数据了。

截图只截一半,后面请理解协议后自行扩展完整。

至此,我们就得到了各通道的数据。

不要忘了,以上的处理是建立在我们知道数据何处开始何处结束的基础上的。那么我们如何寻找数据的入点和出点?让我们继续看这张表:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (位)00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68 (数据)让我们再往后写一些:

00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68 00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68 00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68

不难发现,若一串数据【0~11位都为00,且18位也为00】,则可以断定12~17位为我们所需要的数据。由此容易得出寻找开头的逻辑应为:

程序判断是否符合【0~11位都为00,且18位也为00】,若满足则读取12~17位并处理,若不满足则舍弃第一位并将所有数据前移一位,下次接收的数据存入18位并再次判断是否符合条件。附一个判断过程演示:

01 68 00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01×

【不符合,向前移位,等待新数据。】68 00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68×

【不符合,向前移位,等待新数据。】00 00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68 00√

【符合,读取12~17位数据为6C 01 20 00 01 68,后向前移位等待新数据。】00 00 00 00 00 00 00 00 00 00 006C 01 20 00 01 68 00 00×

【不符合,向前移位,等待新数据。】

附上判断及移位程序。

图注:判断是否为完整数据帧程序

图注:移位程序

【附件中上传了文中使用到的的串口助手,因为有的旁友表示我们家的串口助手不能设置自定义波特率啊!!!】

至此全文完!其中有一些程序上的细节并没有给出但应该不是问题,主要还是理解至上照搬为下嘛。最后预祝大家新年快乐,研发顺利。

欢迎各路大神与我探讨各类机械,电子方面遇到的问题,视觉就算了涉及因为本人比较渣暂时还玩不转Ubuntu。

李庆之,Q352303152 最后一页留给水印,RM神教万岁!+1s!

NMEA协议详解

NMEA协议详解 2017/9/11 NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术 委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associations)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串 口传送到PC机、PDA等设备。 NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议, 大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。 不过,也有少数厂商的设备使用自行约定的协议比如GARMIN的GPS设备(部分GARMIN设备也 可以输出兼容NMEA-0183协议的数据)。软件方面,我们熟知的Google Earth目前也不支持 NMEA-0183协议,但Google Earth已经声明会尽快实现对NMEA-0183协议的兼容。呵呵,除非 你确实强壮到可以和工业标准分庭抗礼,否则你就得服从工业标准。 NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。下面给出这些常用NMEA-0183语句 的字段定义解释。 $GPGGA 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,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=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算 字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0) 字段8:HDOP水平精度因子(0.5 - 99.9) 字段9:海拔高度(-9999.9 - 99999.9) 字段10:地球椭球面相对大地水准面的高度 字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)

GPS数据协议NMEA0183

GPS 数据协议 NMEA-0183
NMEA 0183 是美国国家海洋电子协会(National Marine Electronics Association )为海用电子设备制定的标准格式。目前业已成了 GPS 导航设备统一的 RTCM(Radio Technical Commission for Maritime services)标准协议。
序号 1 2 3 4 5 6 7
命令 $GPGGA $GPGSA $GPGSV $GPRMC $GPVTG $GPGLL $GPZDA
说明 全球定位数据 卫星 PRN 数据 卫星状态信息 运输定位数据 地面速度信息 大地坐标信息 UTC 时间和日期
最大帧长 72 65 210 70 34
注:发送次序$PZDA、$GPGGA、$GPGLL、$GPVTG、$GPGSA、$GPGSV*3、 $GPRMC 协议帧总说明: 该协议采用 ASCII 码, 其串行通信默认参数为: 波特率=4800bps, 数据位=8bit, 开始位=1bit,停止位=1bit,无奇偶校验。 帧格式形如:$aaccc,ddd,ddd,…,ddd*hh 1、“$”——帧命令起始位 2、aaccc——地址域,前两位为识别符,后三位为语句名 3、ddd…ddd——数据 4、“*”——校验和前缀 5、hh——校验和(check sum),$与*之间所有字符 ASCII 码的校验和(各字 节做异或运算,得到校验和后,再转换 16 进制格式的 ASCII 字符。) 6、——CR(Carriage Return) + LF(Line Feed)帧结束,回车和 换行 GPGGA GPS 固定数据输出语句, 这是一帧 GPS 定位的主要数据, 也是使用最广的数据。
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<1 5> <1> UTC 时间,格式为 hhmmss.sss。 <2> 纬度,格式为 ddmm.mmmm(前导位数不足则补 0)。 <3> 纬度半球,N 或 S(北纬或南纬)。 <4> 经度,格式为 dddmm.mmmm(前导位数不足则补 0)。

GNSS输出NEMA协议解析

GNSS 导航芯片输出 NEMA 协议解析 1. NEMA 协议的由来 NMEA 协议是为了在不同的 GPS (全球定位系统)导航设备中建立统一的 BTCM (海事无线电技术委员会)标准,由美国国家海洋电子协会( NMEA-The National Marine Electronics Associa-tion )制定的一套通讯协议。GPS接收机根据NMEA-0183 协议的标准规范,将位置、速度等信息通过串口传送到 PC 机、PDA 等设备。 NMEA-0183 协议是 GPS 接收机应当遵守的标准协议,也是目前 GPS 接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。 NMEA-0183 协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA $GPGSA 、 $GPGSV 、 $GPRMC 、 $GPVTG 、 $GPGLL 等。下面给出这些常用 NMEA-0183 语句的字段定义解释。$GPGGA 例: $GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,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=未定位, 1=非差分定位, 2=差分定位, 3=无效 PPS , 6=正在估算 字段 7: 正在使用的卫星数量( 00 - 12 )(前导位数不足则补 0) 字段 8 : HDOP 水平精度因子( 0.5 - 99.9 ) 字段 9: 海拔高度( -9999.9 - 99999.9 ) 字段 10: 地球椭球面相对大地水准面的高度 字段 11 : 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空) 字段 12: 差分站 ID 号 0000 - 1023 (前导位数不足则补 0,如果不是差分定位将为空) 字段 13: 校验值

Gps协议解析

GPS卫星定位接收器的NMEA协议解析 GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存,在没有进一步处理之前缓存中是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可供高层决策使用的定位信息数据。同其他通讯协议类似,对GPS进行信息提取必须首先明确其帧结构,然后才能根据其结构完成对各定位信息的提取。对于本文所使用的GARMIN GPS 天线板,其发送到计算机的数据主要由帧头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有"$GPGGA"、"$GPGSA"、"$ GPGSV"以及"$GPRMC"等。这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况,我们所关心的定位数据如经纬度、速度、时间等均可以从"$GPRMC"帧中获取得到,该帧的结构及各字段释义如下: $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh <1> 当前位置的格林尼治时间,格式为hhmmss <2> 状态, A 为有效位置, V为非有效接收警告,即当前天线视野上方的卫星个数少于3颗。 <3> 纬度, 格式为ddmm.mmmm <4> 标明南北半球, N 为北半球、S为南半球 <5> 径度,格式为dddmm.mmmm <6> 标明东西半球,E为东半球、W为西半球 <7> 地面上的速度,范围为0.0到999.9 <8> 方位角,范围为000.0到359.9 度 <9> 日期, 格式为ddmmyy <10> 地磁变化,从000.0到180.0 度 <11> 地磁变化方向,为E 或W 至于其他几种帧格式,除了特殊用途外,平时并不常用,虽然接收机也在源源不断地向主机发送各种数据帧,但在处理时一般先通过对帧头的判断而只对"$GPRMC"帧进行数据的提取处理。如果情况特殊,需要从其他帧获取数据,处理方法与之也是完全类似的。由于帧内各数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ASCII码"$"来判断是否是帧头,在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并作出相应的处理。 附:NMEA0183常用协议格式 说明:NMEA0183格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC等

NMEA0183协议说明(中文)

NMEA-0183协议说明 V2.20 2004年1月 注:因本人水平有限,难免出现错,敬请修改。

1、NMEA输出报文 A. GGA –全球定位系统固定数据 $GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,,0000*18

B. GLL –地理信息——纬度/经度 $GPGLL, 3723.2475,N,12158.3416,W,161229.487,A*2C C. GSA –GNSS DOP(定位点)活动卫星 $GPGSA, A,3,07,02,26,27,09,04,15,,,,,,1.8,1.0,1.5*33

和表1.7应互换) D. GSV –GNSS DOP(定位点)活动卫星 $GPGSV,2,2,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71

E. RMC –推荐的最小具体定位数据 $GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10

$GPVTG,309.62,T,,M,0.13,N,0,2,K*6E NMEA 输入报文提供了允许通过NMEA协议控制GPS的方法。 传输格式: 1.起始符包含3个字节,从MID100开始(Message identifier consisting of three numeric characters. Input messages begin at MID 100.)。?????? 2.具体数据,特定的数据序列。 3.NMEA定义的校验是2个HEX的字符,适用于所有输入报文。

NMEA通讯协议详解

NMEA通讯协议详解 说起NMEA协议,只要接触过GPS设备的人,或者说是要用到GPS设备研发的人都知道,这是一个很常用的GPS通讯协议,而且也有很多人遇到关于NEMA协议的一些问题,我忽然有一个想法,就是按照自己对这个协议的一些理解,写一点这方面的东西,看是不是能帮刚刚入门的人解答一些疑问,由于笔者水平有限,这个东西也只能算是一个简单介绍,就算是知识普及吧,希望能引高手出来大家一起讨论。好了,言归正传,我们开始吧! 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语句。

NMEA0183 协议

GNSS NMEA 0813标准数据格式的解释和模拟 廖永生梁绕 (广西第一测绘院广西南宁530023) 【摘要】对NMEA 0183格式的定位数据进行解释和数据模拟,为开发GNSS应用服务系统作了基础性研究,可作为未来GNSS各应用系统开发参考。 【关键词】NMEA 0183 GNSS数据解释模拟 1 前言 GNSS导航定位技术是目前应用得最广泛的空间定位技术之一,已被广泛应用于空间信息数据采集和服务等各个方面。随着各地区域性CORS(Continously Operation Reference System)建成,差分GPS定位服务得到了不断深化。随着GLONASS的完善和Galileo卫星导航定位系统的建成,GNSS导航定位技术将更加普及,将会对各行各业都产生重大影响。 数据格式问题一直是GNSS相关服务中的难题,特别是差分GNSS数据和静态GNSS数据格式之间的差异使普通GPS设备无法直接获得专业差分服务。数据格式标准的统一,是实现GNSS相关服务的基础。 目前最通用的GNSS格式是NMEA 0183格式,NMEA 0183是最终定位格式,即将二进制定位格式转为统一标准定位格式,与卫星类型无关。掌握NMEA 0183格式,对于推广GNSS应用服务和研究GNSS相关技术具有重要意义。 本文将对NMEA 0183格式进行概括说明,同时采用程序模拟NMEA 0183格式,作为NMEA 0183标准格式的技术探索。 2 NMEA 0183协议概述 NMEA是“National Marine Electronics Association”(国际海洋电子协会)的缩写,同时也是数据传输标准工业协会,该协会定制的GNSS数据格式是NMEA 0183数据格式,它是一套定义接收机输出的标准信息,有几种不同

GPS NMEA协议数据全分析

NMEA是"National Marine Electronics Association"(国际海洋电子协会)缩写,同时也是数据传输标准工业协会,在这里,实际上应为NMEA 0183。它是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立相关的ASCII格式,逗点隔开数据流,数据流长度从30-100字符不等,通常以每秒间隔选择输出,最常用的格式为"GGA",它包含了定位时间,纬度,经度,高度,定位所用的卫星数,DOP值,差分状态和校正时段等,其他的有速度,跟踪,日期等。NMEA实际上已成为所有的GPS接收机和最通用的数据输出格式,同时它也被用于与GPS接收机接口的大多数的软件包里。 NMEA数据如下:$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77 $GPRMC,121252.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54 $GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04 $GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,,0000*72 $GPGSA,A,3,14,15,05,22,18,26,,,,,,,2.1,1.2,1.7*3D $GPGSV,3,1,10,18,84,067,23,09,67,067,27,22,49,312,28,15,47,231,30*70 $GPGSV,3,2,10,21,32,199,23,14,25,272,24,05,21,140,32,26,14,070,20*7E $GPGSV,3,3,10,29,07,074,,30,07,163,28*7D $GPGGA,032648.00,2307.595860,N,11321.993373,E,1,09,0.9,30.7,M,-5.2,M,,*4C $PSAT,HPR,032714.00,74.19,-23.16,,N*1F 说明:NMEA0183格式以“$”开始,常用语句有GPGGA,GPVTG,GPZDA等 1、GPS DOP and Active Satellites(GSA)当前卫星信息 $GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7> <1>模式:M = 手动,A = 自动。<2>定位型式1 = 未定位,2 = 二维定位,3 = 三维定位。<3>PRN 数字:01 至32 表天空使用中的卫星编号,最多可接收12颗卫星信息。<4> PDOP位置精度因子(0.5~99.9)<5> HDOP水平精度因子(0.5~99.9)<6> VDOP垂直精度因子(0.5~99.9)<7> Checksum.(检查位). 2、GPS Satellites in View(GSV)可见卫星信息$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,?<4>,<5>,<6>,<7>,<8> <1> GSV语句的总数<2> 本句GSV的编号<3> 可见卫星的总数,00 至12。<4> 卫星编号,01 至32。<5>卫星仰角,00 至90 度。<6>卫星方位角,000 至359 度。实际值。<7>讯号噪声比(C/No),00 至99 dB;无表未接收到讯号。<8>Checksum.(检查位). 第<4>,<5>,<6>,<7>项个别卫星会重复出现,每行最多有四颗卫星。其余卫星信息会于次一行出现,若未使用,这些字段会空白。 3、Global Positioning System Fix Data(GGA)GPS定位信息 $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh <1> UTC时间,hhmmss(时分秒)格式<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)<3> 纬度半球N(北半球)或S(南半球)<4> 经度dddmm.mmmm(度分)

NMEA0183协议的介绍和解析

GPS数据遵循NMEA-0183协议,该数据标准是由NMEA(National Marine Electronics Association,美国国家海事电子协会)于1983年制定的。统一标准格式NMEA-0183 输出采用ASCII 码,其串行通信的参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。 数据传输以“语句”的方式进行,每个语句均以“$”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。 NMEA-0183的数据信息有十几种,这些信息的作用分别是:$GPGGA:输出GPS的定位信息;$GPGLL:输出大地坐标信息;$GPZDA:输出UTC时间信息;$GPGSV:输出可见的卫星信息;$GPGST:输出定位标准差信息;$GPGSA:输出卫星DOP值信息;$GPALM:输出卫星星历信息;$GPRMC:输出GPS推荐的最短数据信息等。 分别介绍如下: 1. GPRMC语句(Recommended Minimum Specific GPS/TRANSIT Data-RMC,推荐定位信息1次/1秒) 对于一般的GPS动态定位应用,GPRMC语句完全满足要求。该语句中包括经纬度、速度、时间和磁偏角等字段,这些数据为导航定位应用提供了充分的信息。下表详细说明GPRMC语句中的各个字段: $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,,<12> 字段 $GPRMC语句意义——取值范围 <1> UTC时间:hhmmss.ss——000000.00~235959.99 <2> 状态,有效性——A表示有效;V表示无效 <3> 纬度格式:ddmm.mmmm——0000.00000~8959.9999 <4> 南北半球——N北纬;S南纬 <5> 经度格式:dddmm.mmmm——00000.0000~17959.9999 <6> 东西半球——E表示东经;W表示西经 <7> 地面速度——000.00~999.999 <8> 速度方向——000.00~359.99 <9> 日期格式,月日年——010100~123199 <10> 磁偏角,单位:度——00.00~99.99 磁偏角方向——E表示东;W表示西 <12> 模式指示及校验和—— A=自主定位,D=差分,E=估算,N=数据无效 例如: $GPRMC,074529.82,A,2429.6717,N,11804.6973,E,12.623,32.122,010806,,W ,A*08 2. GPGGA语句(Global Positioning System Fix Data-GGA,GPS定位信息, 输出1次/1秒) GPS定位主要数据,该语句中包括经纬度、质量因子、HDOP、高程、基准站号等字段。下表详细说明GPGGA语句中的各个字段: $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,,<12>,,<14> 字段 $GPGGA语句意义——取值范围 <1> UTC时间:hhmmss.ss——000000.00~235959.99

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

GPS NMEA-0183协议常用报文数据格式NMEA-0183协议定义的语句非常多,常用如下: GPGGA(定位信息) $GPGGA,HHMMSS.SS,DDMM.MMMM,S,DDDMM.MMMM,S,N,QQ,PP.P,SAAA AA.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 S ystem 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=单点定位(GP S FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK F IX),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 Activ e 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)

GNSS输出NEMA协议解析

GNSS导航芯片输出NEMA协议解析 1.NEMA协议的由来 NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。 NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。 NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。下面给出这些常用NMEA-0183语句的字段定义解释。 $GPGGA 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,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=未定位,1=非差分定位,2=差分定位,3=无效PPS,6=正在估算 字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0) 字段8:HDOP水平精度因子(0.5 - 99.9) 字段9:海拔高度(-9999.9 - 99999.9) 字段10:地球椭球面相对大地水准面的高度 字段11:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空) 字段13:校验值

GPS通讯协议(NMEA0183)解析

GPS通讯协议(NMEA0183)解析 说起NMEA协议,只要接触过GPS设备的人,或者说是要用到GPS设备研发的人都知道,这是一个很常用的GPS通讯协议,而且也有很多人遇到关于NEMA协议的一些问题,我忽然有一个想法,就是按照自己对这个协议的一些理解,写一点这方面的东西,看是不是能帮刚刚入门的人解答一些疑问,由于笔者水平有限,这个东西也只能算是一个简单介绍,就算是知识普及吧,希望能引高手出来大家一起讨论。好了,言归正传,我们开始吧! 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语句。

NMEA协议

NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA 等设备。 NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。 不过,也有少数厂商的设备使用自行约定的协议比如GARMIN的GPS设备(部分GARMIN设备也可以输出兼容NMEA-0183协议的数据)。软件方面,我们熟知的Google Earth目前也不支持NMEA-0183协议,但Google Earth已经声明会尽快实现对NMEA-0183协议的兼容。呵呵,除非你确实强壮到可以和工业标准分庭抗礼,否则你就得服从工业标准。 NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。下面给出这些常用NMEA-0183语句的字段定义解释。 $GPRMC 例: $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A* 50 $GPRMC,133402.00,A,4717.14124,N,00833.86176,E,0.019,247.29,190203,,,A *63 字段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

NEMA0183 协议分析

NMEA0813协议解析1 信息源标识(Talker Identifiers)

2 语句标识符与格式(Sentence Identifiers and Formats) 在此,只列出语句标识符及中文解释,具体格式内容详见各设备相关语句。

3 属性语句(Some Proprietary Sentences)

4 NMEA0813 GPS相关 4.1 信息源 4.2 GPS相关语句 NMEA 0183 输出语句包括GGA、GSA、GSV、RMC 、VTG、GLL。可通过GPS串口调试软件发送相应的命令语句给GPS OEM 板,此后GPS OEM板会跟据设置参数决定每隔若干毫秒发送哪种或哪几种NMEA 语句。 4.2.1 GGA格式解析 例:$GPGGA,062320,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7D 11 1 2 3 4 5 6 7 8 9 10| 12 13 14 15 | | | | | | | | | | | | | | | $--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh 1) UTC时间 2) 纬度 3) N=北纬S=南纬 4) 经度 5) E=东经W=西经 6) GPS性能指示0=未定位1=误差分定位信息2=带差分定位信息 7) 使用卫星号00-12 8) 精度百分比 9) 大地水准面高度 10) 天线高度单位米

12) 高度单位米 13) 带差分GPS定位数据时间,未使用DGPS时此字段为空 14) 差分站ID号0000-1023 15) 校验位 4.2.2 GSA格式解析 例:$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09 1 2 3 14 15 16 17 18 | | | | | | | | $--GSA,a,a,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x.x,x.x,x.x*hh 1) 选择模式M=手动A=自动 2) 当前状态1=无定位信息2=2D 3=3D 3) 使用卫星号1 4) 使用卫星号2 ... 14) 使用卫星号12 15) 位置精度米 16) 水平精度米 17) 垂直精度米 18) 校验位 4.2.3 GSV格式解析 例:$GPGSV,1,1,00,,,,,,,,,,,,,,,,*79 1 2 3 4 5 6 7 n | | | | | | | | $--GSV,x,x,x,x,x,x,x,...*hh 1) GSV语句的总数目 2) 当前GSV语句总数 3) 显示卫星的总数目 4) 卫星的PRV号星号 5) 卫星仰角 6) 卫星旋角/方位 7) 信噪比 ... 更多颗卫星数据省略,其中每颗卫星数据包括<4>星号<5>仰角<6>旋角<7>信噪比 n) 校验位 4.2.4 RMC格式解析 例:$GPRMC,062321,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0C $GPRMC,154916,A,3140.0488,N,12112.8300,E,000.0,000.0,080416,,,A*7D 12 1 2 3 4 5 6 7 8 9 10 11 | | | | | | | | | | | | | $--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a*hh 1) UTC时间 2) 状态位V=导航报警接收器 3) 纬度 4) N=北纬S=南纬

nmea0183协议解析器

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 nmea0183协议解析器 甲方:___________________ 乙方:___________________ 日期:___________________

nmea0183B议解析器 篇一:nema0183协议分析 nmea0813协议解析 1 信息源标识(talkeridentifiers ) 2 语句标识符与格式(sentenceidentifiersandFormats ) 在此,只列出语句标识符及中文解释,具体格式内容详 见各设备相关语句。 3 届性语句(someproprietarysentences ) 4nmea0813gps 相关 4.1信息源 4.2gps相关语句 nmea0183输出语句包括gga、gsa、gsV、Rmc Vtg、gll。 可通过gps串口调试软件发送相应的命令语句给gpsoem板, 此后gpsoem板会跟据设置参数决定每隔若干毫秒发送哪种或哪几种nmea语句。 4.2.1gga格式解析 例: $gpgga,062320,3537.8333,n,13944.6667,e,0,00,99.9,01 00,m,,m,000,0000*7d 11

12345678910|12131415||||||||||||||| $--gga,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x, m,x.x,m,x.x,xxxx*hh1)utc 时间2)纬度 3)n=北纬s=南纬4)经度 5)e=东经w=?经 6)gps性能指示0=未定位仁误差分定位信息2=带差分 定位信息7)使用卫星号00-128)精度百分比9)大地水准面高 度10)天线高度单位米 11) wsg-84大地椭球体海平面相对海平面的高度,负数 表示低于平均海平面 12)高度单位米 13)带差分gps定位数据时间,未使用dgps时此字段为 空14)差分站id号0000-102315)校验位 4.2.2gsa格式解析 例:$gpgsa,a,1,,,,,,,,,,,,,99.9,99.9,99.9*09 1231415161718|||||||| $--gsa,a,a,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x.x,x.x,x.x* hh 1)选择模式m寻动a=自动 2)当前状态仁无定位信息2=2d3=3d3)使用卫星号14)使用卫星号

GPS_NMEA-0813协议详解

GPS NMEA-0183协议详解 NMEA协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。 NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。 NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL、$GPZDA等。下面给出这些常用NMEA-0183语句的字段定义。 协议帧总说明: 该协议采用ASCII码,其串行通信默认参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。 帧格式形如:$aaccc,ddd,ddd,…,ddd*hh 1、“$”——帧命令起始位 2、aaccc——地址域,前两位为识别符,后三位为语句名 3、ddd…ddd——数据 4、“*”——校验和前缀 5、hh——校验和(check sum),$与*之间所有字符ASCII码的校验和(各字节做异或运算,得到校验和后,再转换16进制格式的ASCII字符。) 6、——CR(Carriage Return)+ LF(Line Feed)帧结束,回车和换行 GPGGA GPS固定数据输出语句,这是一帧GPS定位的主要数据,也是使用最广的数据。 $GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*<15> <1> UTC时间,格式为hhmmss.sss。 <2> 纬度,格式为ddmm.mmmm(前导位数不足则补0)。 <3> 纬度半球,N或S(北纬或南纬)。 <4> 经度,格式为dddmm.mmmm(前导位数不足则补0)。 <5> 经度半球,E或W(东经或西经)。 <6> 定位质量指示,0=定位无效,1=定位有效。 <7> 使用卫星数量,从00到12(前导位数不足则补0)。 <8> 水平精确度,0.5到99.9。 <9> 天线离海平面的高度,-9999.9到9999.9米 <10> 高度单位,M表示单位米。 <11> 大地椭球面相对海平面的高度(-999.9到9999.9)。 <12> 高度单位,M表示单位米。

相关文档