一种新的NMEA0183协议解析方法实现
- 格式:pdf
- 大小:717.45 KB
- 文档页数:4
《工业控制计算机》2021年第34卷第2期据统计,2018年我国视力残疾患者人数达到1700多万。
盲人在独自行走时主要依靠导盲装置,最简单的装置是普通的手杖,用它在地面上敲击,可帮助盲人发现0.5m 以内的障碍物[1]。
随着电子技术的发展与电子产品的普遍,一些智能盲人出行辅助设备的出现改变了盲人对传统的盲杖的依赖,这些产品能够运用现代的科学技术,方便盲人的出行,增加出行的安全性,同时让盲人的出行更加便利,导盲仪便是其中一种智能产品。
导盲仪利用超声波传感器来实现盲人出行避障的需求,带有一定的导航定位功能,能够通过语音提示盲人前方的障碍物,告知盲人下一步的前进方向。
导航数据是盲人出行定位中必不可少的一部分,全球定位系统(GNSS )作为导航数据的主要输出源,所以对导盲仪的GPS 数据进行采集和解析非常重要。
而当前领域下,导盲仪GPS 定位信息的通信传输相关研究较少,定位数据共享不方便,使得对导盲仪位置信息的远程监控上存在一定的障碍。
针对该问题,本文提出了一种基于NMEA-0183协议的导盲仪定位信息采集与解析系统,基于该协议和借助U-Center 及MATLAB 工具对定位数据进行接收和解析,通过C #编写WinForm 窗体程序实现GPS 定位数据的可视化显示,在一定程度上解决了盲人出行时导盲仪定位信息远程监控的问题。
1NMEA 机构及NMEA-0183通信协议1.1NMEA 机构NMEA-0183协议由NMEA (National Marine Electronics Association ,国家海洋电子协会(美国))及IMEA (International Marine Electronics Association 国际海洋电子协会)共同拥有,上述协会主要致力于制订船用电子设备之间的数据传输标准。
NMEA 机构于1957年由一批电子设备销售厂商在纽约成立,最初目的是为了加强电子设备厂商之间的联系,随着行业的发展逐渐吸引设备制造商的加入,并与美国联邦通信委员会(FFC ,Federal Communications Commission )、美国海岸警卫队(United States Coast Guard )及国际海运事业无线电技术委员会(RTCM ,The Radio Technical Commission for Mar⁃itime Services )等组织和机构建立紧密的联系[2-3]。
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*18B. GLL –地理信息——纬度/经度$GPGLL, 3723.2475,N,12158.3416,W,161229.487,A*2CC. GSA –GNSS DOP(定位点)活动卫星$GPGSA, A,3,07,02,26,27,09,04,15,,,,,,1.8,1.0,1.5*33D. GSV –GNSS DOP(定位点)活动卫星$GPGSV,2,2,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71E. 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*6ENMEA 输入报文提供了允许通过NMEA协议控制GPS的方法。
传输格式:1.起始符包含3个字节,从MID100开始(Message identifier consisting of three numeric characters. Input messages begin at MID 100.)。
??????2.具体数据,特定的数据序列<data>…<date>。
3.NMEA定义的校验是2个HEX的字符,适用于所有输入报文。
4.所有输入报文都以回车符(CR)和换行符<LF>结束,即\r\n,十六进制码为0D0A。
因为\r\n 是不可打印的ASCII字符,是示例字符串,但必须发送强制其作为输入报文的终止符。
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协议一、引言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字段包含有关导航信息的推荐最小数据集,如时间、速度、航向等。
nmea 0183 标准NMEA 0183 标准。
NMEA 0183 标准是一种用于船舶和航海设备之间通信的电子数据标准。
它由National Marine Electronics Association(NMEA)制定,旨在提供一种统一的数据格式,以便不同制造商生产的设备之间可以进行数据交换和通信。
NMEA 0183 标准已经成为船舶和航海设备行业的主流标准,被广泛应用于全球各种船舶和航海设备中。
NMEA 0183 标准采用了一种基于ASCII字符的数据格式,用于传输位置、导航、速度、时间等信息。
它定义了一系列数据语句(Sentence),每个语句包含特定的信息,如GPS位置、航向、航速、时间等。
这些语句以特定的格式和规则进行组织和传输,以确保设备之间可以正确解析和处理这些信息。
NMEA 0183 标准定义了一些常用的数据语句,如GGA、RMC、VTG、GSA 等,每个语句都有特定的格式和含义。
例如,GGA语句包含了GPS定位信息,包括经纬度、海拔高度等;RMC语句包含了推荐的最小定位信息,包括地面速度、地面航向、日期、时间等。
通过这些语句,不同设备可以相互交换位置和导航信息,实现船舶和航海设备之间的数据通信和协作。
NMEA 0183 标准还定义了数据传输的物理接口和电气特性,包括串行通信接口、电压电平、数据传输速率等。
这些规范确保了不同制造商生产的设备可以在物理层面进行连接和通信,从而实现数据的交换和共享。
总的来说,NMEA 0183 标准为船舶和航海设备之间的数据通信提供了一种统一的解决方案,使得不同设备可以相互交换位置、导航、速度、时间等信息。
它的广泛应用促进了航海设备的互联互通,提高了船舶的安全性和效率,成为船舶和航海设备行业的重要基础设施之一。
随着技术的不断发展,NMEA 0183 标准也在不断更新和完善,以适应新的应用需求和技术发展。
第1期总第227期2020年1月浙江水利科技Zhejiang HydrotechnicsNo.1Total No.227Jan.2020海洋测绘常用NMEA0183数据协议格式解析魏荣瀛张坤军"2(1.浙江省河海测绘院,浙江杭州310008;2.浙江省水利防灾减灾重点实验室,浙江杭州310020)摘要:自从美国GPS投入使用以来,卫星定位系统以其全天候、实时、动态和连续等优势在军事、交通、水利和授时等多个领域得到广泛应用。
为了便于卫星定位系统与其他设备进行信息交互,国内外发布了大量的应用标准,与海洋测绘相关的主要有NMEA0183.RTCM SC104和RINEX。
介绍NMEA机构及NMEA0183协议发展,分析该协议的通用格式,并解析常用的GGA、VTG和ZDA数据格式。
关键词:海洋测绘;NMEA0183;GGA;VTG;ZDA;GNSS中图分类号:P229文献标识码:A文章编号:1008-701X(2020)01-0064-02DOI:10.13641/ki.33-1162/tv.2020.01.018Analysis on Commonly Used Data Protocol Formats of NMEA0183in Hydrographic SurveyWEI Rong-hao,ZHANG Kun-jun(1.Zhej iang Surveying Institute of Estuary and Coast,Hangzhou310008,Zhej iang,China;2.Zhejiang Provincial Key Laboratory of HydrauEc Disaster Prevention and Mitigation,Hangzhou310020,Zhejiang,China)Abstract:Since GPS was put into use in the1980s,satellite positioning systems have been widely used in military, transportation,water conservancy and timing because of its great advantage in all一day,real-time,high一dynamic and continuous output.In order to communicate between satellite positioning devices and other device such as computer, lots of standards have been developed such as NMEA0183,RTCM SC104and RINEX which have been widely used in hydrographic survey.This paper first introduces the institution of NMEA and the development of NMEA0183standard, then analyses the generic format,GGA,VTG and ZDA.This will offer technical detail for applications in hydrographic survey.Key words:hydrographic survey;NMEA0183;GGA;VTG;ZDA;GNSS1问题的提出自从美国的GPS系统(Global Positioning System,GPS)自20世纪80年代投入使用以来,全球卫星定位系统(Global Navigation Satellite System,GNSS)因其具有可为全球范围内数量不限的用户提供全天候、连续实时的位置、速度和时间等优势,己经广泛应用于军事、交通、水利、授时等多个领域,多个国家和组织也建设了自己的全球卫星导收稿日期:2019-05-30基金项目:浙江省水利科技计划项目(RC1805,RC1708).作者简介:魏荣濒(1982-),男,高级工程师,硕士,主要研究海洋物理探测及Lidar数据釆集、处理与融合.E_mail:weironghao@ 航系统或者区域增强系统,如我国的北斗系统、俄罗斯的Glonass、欧盟的Galileo、日本的QZSS和印度的NavIC (IRNSS)等。
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*18B. GLL –地理信息——纬度/经度$GPGLL, 3723.2475,N,12158.3416,W,161229.487,A*2CC. GSA –GNSS DOP(定位点)活动卫星$GPGSA, A,3,07,02,26,27,09,04,15,,,,,,1.8,1.0,1.5*33D. GSV –GNSS DOP(定位点)活动卫星$GPGSV,2,2,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71E. 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*6ENMEA 输入报文提供了允许通过NMEA协议控制GPS的方法。
传输格式:1.起始符包含3个字节,从MID100开始(Message identifier consisting of three numeric characters. Input messages begin at MID 100.)。
??????2.具体数据,特定的数据序列<data>…<date>。
3.NMEA定义的校验是2个HEX的字符,适用于所有输入报文。
4.所有输入报文都以回车符(CR)和换行符<LF>结束,即\r\n,十六进制码为0D0A。
因为\r\n 是不可打印的ASCII字符,是示例字符串,但必须发送强制其作为输入报文的终止符。
竭诚为您提供优质文档/双击可除nmea0183协议解析器篇一: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*7d1112345678910|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=未定位1=误差分定位信息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*091231415161718||||||||$--gsa,a,a,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x.x,x.x,x.x* hh1)选择模式m=手动a=自动2)当前状态1=无定位信息2=2d3=3d3)使用卫星号14)使用卫星号2...14)使用卫星号1215)位置精度米16)水平精度米17)垂直精度米18)校验位4.2.3gsV格式解析例:$gpgsV,1,1,00,,,,,,,,,,,,,,,,*791234567n||||||||$--gsV,x,x,x,x,x,x,x,...*hh1)gsV语句的总数目2)当前gsV语句总数3)显示卫星的总数目4)卫星的pRV号星号5)卫星仰角6)卫星旋角/方位7)信噪比...更多颗卫星数据省略,其中每颗卫星数据包括星号仰角旋角信噪比n)校验位4.2.4Rmc格式解析例:$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*7d121234567891011|||||||||||||$--Rmc,hhmmss.ss,a,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxx x,x.x,a*hh1)utc时间2)状态位V=导航报警接收器3)纬度4)n=北纬s=南纬5)经度篇二:nmea-0183协议说明(中文)nmea-0183协议说明V2.2020xx年1月注:因本人水平有限,难免出现错,敬请修改。
NMEA0183协议1. 简介NMEA0183协议是一种用于海洋电子设备之间通信的标准协议。
它定义了一套规范,描述了数据的格式、交换方式和通信协议等内容。
NMEA0183协议广泛应用于航海、渔业、航空等领域,被许多设备制造商所采用。
2. NMEA0183协议的结构NMEA0183协议使用ASCII码表示数据,每个数据字段以逗号分隔。
一个完整的数据称为一条语句(Sentence),一条语句包含一个开始字符“$”、数据字段、星号和校验值。
数据字段的顺序是确定的,不同的语句类型有不同的数据字段。
3. 常用的NMEA0183语句3.1 GGA语句GGA语句(Global Positioning System Fix Data)提供了位置信息。
它包含了接收器的经度、纬度、海拔高度等数据。
GGA语句示例:$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*473.2 RMC语句RMC语句(Recommended Minimum Specific GNSS Data)提供了位置、速度和时间等数据。
它包含了接收器的经度、纬度、速度、航向等信息。
RMC语句示例:$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A3.3 VTG语句VTG语句(Course Over Ground and Ground Speed)提供了航向和地速信息。
它包含了接收器的航向、地速和速度单位等数据。
VTG语句示例:$GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*483.4 GSA语句GSA语句(GNSS DOP and Active Satellites)提供了卫星状态和定位精度因子等信息。
它包含了接收器使用的卫星编号、定位精度因子和卫星信号强度等数据。
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数据格式,它是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立相关的ASCII格式,逗点隔开数据流,数据流长度从30-100字符不等,通常以每秒间隔选择输出。
最常用的格式为“GGA”,它包含了定位时间、纬度、经度、高度、定位所用的卫星数、DOP值、差分状态和校正时段等,还有速度,跟踪,日期等。
第42卷 第1期 2017年2月 全球定位系统
GNSS World of China Vo1.42,NO.1
February,2017
一种新的NMEA01 83协议解析方法实现 刘赋山,郭承军,贾振东 (电子科技大学电子科学技术研究院,四川成都611731)
摘要:NMEA0183协议解析模块是导航系统中至关重要的软件模块,该模块的健壮性 和高效性直接关系到整个导航系统的性能。为了能及时并高效解析NMEA数据流,分开处 理NMEA数据流解析与数据显示,降低解析模块与显示模块的耦合性,提出一种基于正则表 达式和MVC架构的NMEA0183协议解析方法。整个解析模块可分为四个阶段,原始 NMEA数据流存储,NMEA数据流高效解析,NMEA数据校验,NMEA数据显示。目前该方 法已应用到GPS导航产品中,实测表明,该解析模块高效可靠,数据流解析显示实时性好。 关键词:GPS;NMEA0813;解析;正则表达式;MVC 中图分类号:P228.4 文献标志码:A 文章编号:1008—9268(2017)01—0070—04
t’ 引 舌 伴随着导航技术的发展与应用,我国很多领域 的生产力水平得到提高,人们的生活也更方便,对 我国科技的进步和国力的壮大有着重大的意义。 GPS卫星导航系统是目前全球内使用最广泛的全 球定位系统,其中GPS模块通过空间部分提供的 信息计算出自己当前的位置速度等信息,然后通过 这些信息用NMEAO813协议封装,并通过串口发 送给数据处理中心进行处理[1]。数据处理中心的 最主要的任务就是保证处理由GPS模块发送过来 的数据的可靠性、高有效性。但如今有部分产品需 要保证正确高效解析NMEA数据的同时又要保 证数据显示的实时性[2],本文运用了正则表达式与 MVC架构相结合的方式,实现了一种高效稳定又 保证一定实时性数据显示的方法。 l可行性分析 1.1 NMEA0183协议简介 NMEA0183协议是由美国国家海洋电子协会 开发、维护并发布的标准,用于航海远洋时使用的 电子仪器之间的通信 ]。目前大部分GPS接收设 备都遵循这一标准。该接口协议定义了在波特率 为4 800的串口数据总线上传输的电器信号需 收稿日期:2016—08—26 联系人:刘赋山E-mail:fsliu33@163.corn 求、数据传输协议和时间,以及详细的句型格式。 NMEAO183协议的数据以“句子”为单位进行发 送,每个“句子”的结构如图1所示。假如数据域中 的某个值无效,该值将被简单的忽略,但对应的仍 需发送。
’ 成。涮t叉分曩回叠。 R>‘u=
臣 圈
定义旬式 ‘ 唧●惜- 料子: ¥GP GLL,0000.0000.N.00000.0000,E,235949.042。V,N 47 R)(LF)
图1 UBX协议数据包结构 1.2正则表达式简介 正则表达式被作为用来描述其称之为“正则集 的代数”的一种表达式,因而采用了“正则表达式” 这个术语_6]。正则表达式在基于文本的编辑器和 搜索工具中占据着一个非常重要的地位,它是对字 符串操作的一种逻辑公式,是用事先定义好的一些 特定字符及这些特定字符的组合,组成一个“规则 字符串”,这个“规则字符串”用来表达对字符串的 第l期 刘赋山,等:一种新的NMEA0183协议解析方法实现 71 一种过滤逻辑。 给定一个正则表达式和另一个字符串,可以达 到如下的目的: 1)给定的字符串是否符合正则表达式的过滤 逻辑(称作“匹配”); 2)可以通过正则表达式,从字符串中获取想 要的特定部分。 正则表达式的特点是: 1)灵活性、逻辑性和功能性非常强; 2)可以迅速地用极简单的方式达到字符串的 复杂控制。 1.3 MVC架构简介 MVC全名是Model View Controller,是模型 (mode1)一视图(view)一控制器(controller)的缩 写,一种软件设计典范,用一种业务逻辑、数据、界 面显示分离的方法组织代码,将业务逻辑聚集到一 个部件里面,在改进和个性化定制界面及用户交互 的同时,不需要重新编写业务逻辑_7]。MVC被独 特的发展起来用于映射传统的输入、处理和输出功 能在一个逻辑的图形化用户界面的结构中,能有效 保证输出的实时性和减轻代码之间的干扰性。 视图层和业务层分离,这样就允许更改视图层 代码而不用重新编译模型和控制器代码,同样,一 个应用的业务流程或者业务规则的改变只需要改 动MVC的模型层即可。因为模型与控制器和视 图相分离,所以很容易改变应用程序的数据层和业 务规则而不会彼此之间产生干扰性,数据的显示和 数据的接收存储是异步执行的,程序能够在接收的 同时能显示数据,显示数据的同时还在接收下一个 数据。图2为MVC架构示意图。
图2 MVC架构示意图 Model与View之间并不直接通信,它们直接 与Controller进行通信,Controller负责将读取到 的数据解析好放人对应的Model中,从Model中 获取数据并进一步解析后显示在View上。 1.4可行性分析 NMEA0183中的数据也是字符串形式存储, 正则表达式就是针对各种字符串形式的数据进行 高效稳定解析的方法。NMEA0183中有几种不同 格式的数据存储语句,相对应的可以用几种形式的 Model进行分开存储。NMEA0183数据处理后信 息显示需要保证良好的实时性_3],使用MVC架构 进行程序设计能将数据的解析存储于数据实时显 示相分离,两者异步执行,能很好的保证数据信息 显示的实时性。因此,可以利用正则表达解析加 MVC架构对NMEA0183协议进行有效解析的同 时保证数据信息显示的实时性。 2利用正则表达式解析数据 2.1数据格式分析 在NMEA0183中有六种不同的输出协议的 格式。主要分析GGA和RMC两种格式的数据。 ¥GPGGA,161229.487,3723.2475,N,12158.3416,W, 1,O7,1.0,9.0,M,,,,0000*18为GGA格式的数 据样例,该数据以¥GPGGA开头,以<CR><LF >结尾,相对应的,用正则表达式去匹配这个数据 时,首先考虑到头匹配,头是以¥GPGGA开头,则 模式字符串开头应为\¥GPGGA,考虑到该数据 时以<CR><LF>结尾,在标志头¥GPGGA与 <LF>之间有许多的符号可以用’。*’去匹配。 万能匹配符号’。’可以匹配除<LF>(换行符)以 外的任意字符,而’*’是匹配前一个字符0或无限 多次,所以’。*’能够匹配标志头¥GPGGA与< LF>之间的符号。GGA格式的数据的匹配模式 就设定为’\¥GPGGA.*’,同理,解析RMC格式 的数据时设定匹配模式为’\¥GPRMC.*’就可 以了。此时,利用正则表达式解析NMEA0183数 据的高效性就体现出来了,利用正则表达式去匹配 NMEA0183中的数据不需要逐个对比确认,只需 要将头尾匹配对应,则判定该数据为NMEA0183 中具体哪种格式的数据,节省了解析的时间,增强 了解析的效率。寻找出对应的格式后,将语句 以’,’区分开,¥GPGGA,<1>,<2>,<3>,< 4>,<5>,<6>,<7>,<8>,<9>,<10>,< 1l>,<12>,<13>,<14>*hh<CR><LF> 显示出不同信息有其固定的位置,按照位置将不同 信息提取出来即可。 2.2 GGA格式数据解析部分代码实现 NMEAText一” ¥GPGGA。235949.042,0000.0000, 全球 定 位 系 统 第42卷 N.0o0o0.()O00,E.0.O0,.0.0,M.0.0.M.,0000*45 ¥GPGLL,0000.0000.N,00000.0000。E,235949 V.N* 1 7 ¥(;I GSA.A,l……………"X-lE ¥GI ( SV.1.1.00*79 ¥( I’RMC, 235949.042. V.0000.0000. 00000.0000.E…1402O9…N*7E ¥GI VTG,.T..M,.N,,K.N*2 ” pattel‘n—re.compile(r \¥GI GGA.* ) match—pattern.match(NMEAText) if match: print match.group()
变化并将其 示刽View_f 。V Jew用来实时显 0 12, 示Controller传递过来的数据。因为通过串口接 收的NMEA01 83数据流巾各个格式的数据顺序 并没有规律,根据不同数据格式将数据存储于对应 的Model中并利用Controller去监听各个Model 的变化.然后娃示到各个View上去。 3.2实时显示数据 在程序中叮根据需求选择实时查看NMEA t}t小同格式的数据,不同格式的数据有 :同的视图 对应。图3为实时解析并显示的数据视【皋J。
3数据正确性检测 数据在传输的过程中可能出现各种各样的错 误导敛传输的数据错误,为了确保所采集的GPS 数据的n丁 性,必须进行检验和的汁算与比较 。 在每条NMEA0183协议格式数据的最后有个数 据校验和hh为’¥’和’*’之问的所有字符按位 异或的结果.并将其高4位和低4位各用一个 六 进制数(字母大写)表示出来。为此,需要进一步编 写代码去校验数据的jE确性。以下为校验和正确 性检测代码实现。 def transSum(checksum): nI-1mherCollection一 01 23 l56789Al{CDEFG HIJK1 M ()I QRS I、L!VWXYZ" high-二checkSum[O l low—checkSun1l1 J reltlrn numberCollection.index(high)*1 6十nutI1 1)PrL、【)llc( tion.index(1ow) testSt ring一 GPRM{".235949.042,V.0000.0000,N, 000()0.0000.E…1 40209… resuh一 7E L ( tl【1t一0 for char in testString: COll1It 一ord(char) if l ransSum(resuh)一一counl! })rim Yes:tile dala is right else: print Error:wrong data 3.1 MVC架构设计 MVC架构分j个部分:Model,Controller, View, 种NMEA0l83数据格式对应六种Mod— e1.Model用来对NMEA格式数据进行分类存储 和提供View显示的数据的来源。Controller用来 区分 :同NMEA格式数据和监听Model数据的