NMEA通讯协议详解
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:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)字段12:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)字段13:校验值$GPGSA例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息字段1:定位模式,A=自动手动2D/3D,M=手动2D/3D字段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,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:校验值NMEA0183标准语句另一种表达方式详解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><1> UTC时间,hhmmss(时分秒)格式<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)<3> 纬度半球N(北半球)或S(南半球)<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)<5> 经度半球E(东经)或W(西经)<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算<7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)<8> HDOP水平精度因子(0.5~99.9)<9> 海拔高度(-9999.9~99999.9)<10> 地球椭球面相对大地水准面的高度<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<C R><LF><1> 模式,M=手动,A=自动<2> 定位类型,1=没有定位,2=2D定位,3=3D定位<3> PRN码(伪随机噪声码),正在用于解算位置的卫星号(01~32,前面的0也将被传输)。
NMEA协议

NMEA协议协议名称:NMEA协议一、引言NMEA(National Marine Electronics Association)协议是一种用于航海设备之间数据交换的通信协议。
该协议由美国国家海洋电子协会制定,旨在实现船舶和海洋设备之间的数据互通和信息共享。
本协议旨在规范NMEA协议的标准格式和数据传输规则,以确保各种航海设备能够准确地解读和处理数据。
二、协议内容1. 协议版本本协议适用于NMEA协议的版本号为X.XX(例如:NMEA 0183)。
2. 数据格式NMEA协议使用ASCII字符作为数据格式,每条数据以"$"符号开头,以回车换行符"\r\n"结束。
数据字段之间使用逗号分隔。
数据字段的顺序和数量根据不同的数据类型而异。
3. 数据类型NMEA协议定义了多种数据类型,包括但不限于以下几种:- GGA(Global Positioning System Fix Data):用于定位数据的传输,包括经度、纬度、海拔高度等信息。
- RMC(Recommended Minimum Specific GNSS Data):用于推荐的最小GNSS数据传输,包括UTC时间、经纬度、速度等信息。
- VTG(Course Over Ground and Ground Speed):用于地面航向和速度数据的传输。
- GSA(GNSS DOP and Active Satellites):用于GNSS的DOP(定位精度因子)和当前活动卫星的信息传输。
- GSV(GNSS Satellites in View):用于GNSS可见卫星的信息传输。
- ZDA(Time and Date):用于日期和时间的传输。
4. 数据字段NMEA协议中的每个数据字段都有特定的含义和格式要求。
以下是一些常见的数据字段示例:- 经度:以十进制度数表示,范围为0至180度,东经为正,西经为负。
- 纬度:以十进制度数表示,范围为0至90度,北纬为正,南纬为负。
NMEA协议 (3)

NMEA协议一、引言NMEA协议(National Marine Electronics Association Protocol)是一种用于船舶和海洋设备之间的数据通信协议。
该协议规定了数据格式和通信方式,以确保不同设备之间的数据传输和解析的一致性和可靠性。
本协议旨在提供详细的规范,以便协议撰写专家和相关技术人员可以准确地理解和实施NMEA协议。
二、协议版本当前有效的NMEA协议版本为V4.0。
三、协议结构NMEA协议分为两个主要部份:数据格式和通信方式。
1. 数据格式NMEA协议定义了多种数据格式,常见的包括:1.1 NMEA 0183格式NMEA 0183格式是最常用的NMEA协议数据格式。
它使用ASCII字符来表示数据,并采用逗号分隔不同字段。
每一个数据字段都有特定的含义和格式,例如:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47。
1.2 NMEA 2000格式NMEA 2000格式是一种基于控制器局域网(CAN)总线的数据格式。
它使用二进制格式传输数据,并提供更高的数据传输速率和可靠性。
2. 通信方式NMEA协议定义了多种通信方式,常见的包括:2.1 串口通信NMEA协议使用串口通信来传输数据。
常见的串口通信协议包括RS-232和RS-422。
2.2 网络通信NMEA协议也支持通过网络进行数据传输。
常见的网络通信协议包括TCP/IP 和UDP。
四、数据字段NMEA协议定义了多个数据字段,每一个字段都有特定的含义和格式。
以下是一些常见的数据字段:1. GGA(Global Positioning System Fix Data)GGA字段包含有关全球定位系统(GPS)定位的信息,如纬度、经度、海拔高度等。
2. RMC(Recommended Minimum Navigation Information)RMC字段包含有关导航信息的推荐最小数据集,如时间、速度、航向等。
NMEA0183协议说明

NMEA0183协议说明NMEA0183是一种用于航海导航设备之间进行数据传输的标准协议。
它最初是由国际电气和电子工程师协会(IEEE)于1983年制定的,旨在使不同品牌和类型的设备能够进行互联,并以一致的格式和规范交换数据。
NMEA0183协议主要是通过串行通信进行数据传输。
在传输过程中,数据以ASCII字符形式进行编码,并通过串行连接的导航设备之间以特定的速率进行传输。
这一协议支持全双工通信,即设备可以同时发送和接收数据。
除了定位数据,NMEA0183协议还定义了其他常见的数据格式。
例如,$GPGLL格式用于传输经纬度信息;$GPRMC格式用于传输推荐最佳航线信息;$GPVTG格式用于传输船舶或车辆的速度和航向信息等。
NMEA0183协议还提供了一套校验机制以确保数据传输的准确性。
在数据的结尾,“*”之后会跟随一个校验和。
校验和是通过对数据中每个字符进行异或运算得到的。
接收方在接收到数据后,会重新计算校验和,然后将其与接收到的校验和进行比较,以判断数据是否传输正确。
NMEA0183协议已经成为了航海导航领域中最常用的数据交换标准之一、它具有广泛的适用性,并且被几乎所有的GPS接收器和导航设备所支持。
因此,在现代航海导航领域中,几乎可以使用NMEA0183协议进行数据的传输和交换。
总结起来,NMEA0183协议是一种用于航海导航设备之间进行数据传输的标准协议。
通过串行通信,设备可以以ASCII字符形式进行数据的编码和传输。
协议定义了一系列数据格式,包括位置信息、速度、航向、时间、日期等。
校验机制确保了数据的准确性。
NMEA0183协议广泛应用于航海导航领域,并且被几乎所有的GPS接收器和导航设备所支持。
NMEA协议

NMEA协议协议名称:NMEA协议一、背景介绍NMEA(National Marine Electronics Association)协议是一种用于航海电子设备之间通信的标准协议。
该协议定义了一系列数据格式和消息语法,用于传输船舶、航空器和地面设备的位置、速度、方向等信息。
NMEA协议在航海业界被广泛使用,为各种船舶导航设备提供了通用的数据交换方式。
二、协议目的本协议的目的是规定NMEA协议的标准格式,以确保不同设备之间的数据交换能够准确、可靠地进行。
三、协议内容1. 数据格式NMEA协议定义了一种基于ASCII字符的数据格式,每条消息由逗号分隔的字段组成。
每个字段具有特定的含义和数据类型。
以下是一个典型的NMEA消息示例:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*472. 常用消息NMEA协议定义了多种消息类型,常用的包括:- GGA(Global Positioning System Fix Data):包含位置、时间和定位质量指示器等信息。
- RMC(Recommended Minimum Specific GNSS Data):包含位置、速度和时间等信息。
- VTG(Course Over Ground and Ground Speed):包含航向和地速等信息。
3. 数据字段NMEA协议定义了一系列数据字段,用于描述位置、时间、速度、方向等信息。
以下是常用的数据字段:- UTC时间:表示消息记录的时间,格式为hhmmss.sss。
- 纬度和经度:表示位置信息,格式为ddmm.mmmm,其中dd表示度,mm.mmmm表示分钟。
- 定位质量指示器:表示定位质量的指示器,通常为0或1。
- 高度和海拔:表示海拔高度和椭球高度。
- 航向和地速:表示航向和地速信息。
四、协议规范1. 数据传输NMEA协议使用串行通信方式进行数据传输。
标准NMEA协议

标准NMEA协议协议名称:标准NMEA协议一、引言标准NMEA协议是一种用于全球定位系统(GPS)设备和其他导航设备之间进行数据通信的协议。
该协议定义了一系列数据格式和通信规则,以确保不同设备之间的数据交换的一致性和互操作性。
本协议旨在提供一种通用的数据交换标准,使得不同厂商的设备能够无缝地进行数据交互。
二、协议结构标准NMEA协议采用文本格式进行数据传输,每条数据以"$"符号开头,以回车换行符"\r\n"结尾。
数据的内容由逗号分隔的字段组成,每个字段代表一个特定的数据类型。
三、数据格式标准NMEA协议定义了多种数据格式,以下是其中几种常用的数据格式:1. GGA(地理定位信息)格式:- 数据格式:$GPGGA,UTC时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,水平精度因子,天线离海平面的高度,大地水准面偏移量,差分GPS数据期限,差分参考站ID,校验和<CR><LF>- 示例:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*472. GLL(经纬度和UTC时间数据)格式:- 数据格式:$GPGLL,纬度,纬度半球,经度,经度半球,UTC时间,定位状态,校验和<CR><LF>- 示例:$GPGLL,4916.45,N,12311.12,W,225444,A,*1D3. RMC(推荐最小定位信息)格式:- 数据格式:$GPRMC,UTC时间,定位状态,纬度,纬度半球,经度,经度半球,速度,航向,UTC日期,磁偏角,磁偏角方向,模式指示,校验和<CR><LF>- 示例:$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W,*6A四、通信规则1. 数据发送频率:设备应按照预定的频率发送数据,以确保及时更新和数据的准确性。
NMEA通讯协议详解

NMEA通讯协议详解NMEA协议是一种用来在GPS设备和计算机之间进行数据通讯的协议,它定义了一系列的数据格式和规范,以确保各种设备之间能够正确地交换GPS位置、速度和时间等相关数据。
下面将对NMEA协议进行详细解释。
NMEA是National Marine Electronics Association(国家海洋电子协会)的缩写,它最早是为了海洋电子设备之间的通讯而开发的,后来被广泛应用于GPS设备和其他位置定位设备的通讯中。
NMEA协议的主要特点是简单、易于实现和兼容性强。
它使用ASCII码作为字符集,并采用逗号分隔的形式将数据字段分开。
每个数据字段都有一个具有特定含义的标识符,例如$GPGGA标识了GPS定位信息,$GPVTG标识了速度和航向信息等。
NMEA协议定义了一系列的数据语句,其中最常见的有GGA、GSA、GSV、RMC和VTG等语句。
- GGA(Global Positioning System Fix Data)语句提供了位置信息,包括纬度、经度、海拔高度以及GPS定位质量指示等。
- GSA(GNSS DOP and Active Satellites)语句提供了GPS接收机的定位几何精确度因数(DOP)以及用于定位的卫星编号等数据。
- GSV(GNSS Satellites in View)语句提供了卫星的可视信息,包括卫星的编号、仰角、方位角以及信号强度等。
- VTG(Track made good and Ground speed)语句提供了地面速度和航向信息,可以用于导航和航行控制。
除了以上常见的语句外,NMEA协议还定义了一些专用语句,如ZDA语句用于提供时间和日期信息,GNS语句用于混合定位系统等。
NMEA协议的数据字段均为文本形式,并以字符串方式传输。
每条语句以起始符$开始,以回车换行符<CR><LF>结束。
语句中的数据字段以逗号分隔,其中一些字段还可能包含控制字符。
NMEA0183 协议

NMEA0183 协议NMEA0183协议一、引言NMEA0183协议是一种用于航海和船舶导航设备之间进行数据交换的通信协议。
该协议定义了数据格式、语句结构和通信规则,旨在实现不同设备之间的互操作性和数据共享。
本协议旨在确保数据的准确性、一致性和可靠性,以提高航海安全和导航效率。
二、术语和定义1. NMEA:National Marine Electronics Association,美国国家海洋电子协会。
2. 数据帧:NMEA0183协议中的数据传输单位,由起始字符、数据字段和结束字符组成。
3. 语句:由数据帧组成的完整数据包,包含特定的数据类型和信息。
4. 起始字符:数据帧的第一个字符,用于标识数据帧的开始。
5. 数据字段:数据帧中包含的具体数据,根据数据类型和信息的不同而有所变化。
6. 结束字符:数据帧的最后一个字符,用于标识数据帧的结束。
三、协议规范1. 数据格式a. NMEA0183协议使用ASCII字符集进行数据传输。
b. 数据帧由起始字符、数据字段和结束字符组成,每个字段之间使用逗号分隔。
c. 数据字段可以是数字、字母或特殊字符的组合,根据数据类型和信息的不同而有所变化。
d. 数据帧的最大长度为82个字符,包括起始字符、数据字段、逗号和结束字符。
2. 数据语句a. NMEA0183协议定义了多种语句类型,用于传输不同类型的数据。
b. 每个语句以'$'字符作为起始字符,以回车换行符(CR/LF)作为结束字符。
c. 语句中的数据字段按照特定的顺序排列,每个字段的含义由协议规定。
d. 语句的类型由语句标识符(Sentence Identifier)确定,标识符通常由两个字符组成。
3. 数据校验a. 为了确保数据的完整性和准确性,NMEA0183协议使用校验和机制。
b. 校验和是一个两位的十六进制数,表示数据帧中所有字符的异或值。
c. 校验和紧跟在数据字段的结束字符之后,以'*'字符开始,后跟两位十六进制数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语句。
当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—0183是以语句形式发送数据的,接收机可能发送很多类型的语句,而我们需要的可能只是某些语句中的几个字段。
因此就需要对接收到的数据进行解析,取得所需的信息。
另外,可能会由于小数点位数不同等原因,语句的长度是可变的,因而分离感兴趣的信息时,不能按照该信息在语句中所处的字符位置来查找,只能依据逗号分隔符,这一点在数据提取的过程中非常重要。
笔者就经常遇到一些应用软件工程师,在提取NMEA语句中的信息的时候按照字符的长度提取,这样编出来的程序,通用性差,而且经常会出现信息提取错误的问题。
以上都是我们在程序中需要注意的问题。
为解决信息的正确提取问题,并提高程序的复用性,可以编写适当的函数,如一个函数用来分离语句(即通过$字符判断语句头,一直到换行回车结束一条语句);一个函数用来判断语句中的字段数(通过“,”分隔符来提取语句字段),还有一个函数用来返回语句中指定字段的内容。
有了这三个函数,就可以方便的提取所需的信息,此时的工作只是简单字符串比较和显示格式的变换
检验和的计算与比较
最后,为了确保所采集的GPS数据的可靠性,必须进行检验和的计算与比较。
检验和hh为“$”与“*”之间的所有字符按位异或的结果,并将其高4位和低4位各用一个十六进制数(字母大写)表示出来。
为此,需编写函数,从语句头识别符“*”开始,计算检验和,直至“*”到达为止,这时“*”号后面的两个字符就是检验码,将自己的计算结果同这两个检验码字符比较,若不同,按出错处理,并继续运行;若相同,则说明通讯成功,数据接收正确,可以处理该语句,提取所需数据。
这里简单介绍了NMEA一0183规范的接口定义和数据格式,但是篇幅限制没有对NMEA语句进行详细的解析,语句的详细说明可参照NMEA规范或各GPS接收机的说明书。
我现在
手中有一份中文版本的NMEA协议语句的详细解析,当然并不是全部的语句,是根据GARMIN技术手册翻译过来的,如果有兴趣了解的兄弟可以留下邮箱。
以上这些文字,是AKA按照自己对NMEA协议的的理解,再加上一点东找西看来的东西写出来的,如对其中的问题有疑问,欢迎探讨!邮箱地址:zhl001@。