您的当前位置:首页正文

一种新的NMEA0183协议解析方法实现

2020-07-09 来源:爱站旅游
导读一种新的NMEA0183协议解析方法实现
第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’ 引 舌 伴随着导航技术的发展与应用,我国很多领域 NMEAO183协议的数据以“句子”为单位进行发 送,每个“句子”的结构如图1所示。假如数据域中 的生产力水平得到提高,人们的生活也更方便,对 我国科技的进步和国力的壮大有着重大的意义。 GPS卫星导航系统是目前全球内使用最广泛的全 的某个值无效,该值将被简单的忽略,但对应的仍 需发送。 球定位系统,其中GPS模块通过空间部分提供的 信息计算出自己当前的位置速度等信息,然后通过 这些信息用NMEAO813协议封装,并通过串口发 送给数据处理中心进行处理[1]。数据处理中心的 最主要的任务就是保证处理由GPS模块发送过来 的数据的可靠性、高有效性。但如今有部分产品需 要保证正确高效解析NMEA数据的同时又要保 证数据显示的实时性[2],本文运用了正则表达式与 ’ 成。涮t叉分曩回叠。 R>‘u= 臣 圈定义旬式 料子: ‘  唧●惜- R)(LF) ¥GP GLL,0000.0000.N.00000.0000,E,235949.042。V,N 47 MVC架构相结合的方式,实现了一种高效稳定又 保证一定实时性数据显示的方法。 图1 UBX协议数据包结构 l可行性分析 1.1 NMEA0183协议简介 1.2正则表达式简介 正则表达式被作为用来描述其称之为“正则集 的代数”的一种表达式,因而采用了“正则表达式” 这个术语_6]。正则表达式在基于文本的编辑器和 搜索工具中占据着一个非常重要的地位,它是对字 NMEA0183协议是由美国国家海洋电子协会 开发、维护并发布的标准,用于航海远洋时使用的 电子仪器之间的通信 ]。目前大部分GPS接收设 备都遵循这一标准。该接口协议定义了在波特率 符串操作的一种逻辑公式,是用事先定义好的一些 特定字符及这些特定字符的组合,组成一个“规则 字符串”,这个“规则字符串”用来表达对字符串的 为4 800的串口数据总线上传输的电器信号需 收稿日期:2016—08—26 联系人:刘赋山E-mail:fsliu33@163.corn 第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 0 12, 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() 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数据的 变化并将其 示刽View_f 。V Jew用来实时显 示Controller传递过来的数据。因为通过串口接 收的NMEA01 83数据流巾各个格式的数据顺序 并没有规律,根据不同数据格式将数据存储于对应 的Model中并利用Controller去监听各个Model 的变化.然后娃示到各个View上去。 3.2实时显示数据 在程序中叮根据需求选择实时查看NMEA t}t小同格式的数据,不同格式的数据有 :同的视图 对应。图3为实时解析并显示的数据视【皋J。 图3 NMEA数据视图 4性能分析与测试 呵对GPS报文文件进行一次扫描,也可通过 串|1传输报文数据并实时解析并显示。在对GPS 报文文件进行一次性扫描的模式下。有着较高的解 析效率.用该程序解析r一个包含5000条GPS报 文的文件并未发现任何错 .陔程序能很好的应对 需要一次性lfI描大量(;PS报义的情况。mf在实时 解析显示模式下,tIL有着十分良好的实时 示性. 但卡【j比一次性扫描模式的解析错误率较高。 5 结束语 本文针对NMEA01 83协议的特点。采用正!J!Ij 表达式的匹配技术进行高效解析,应用了MVC架 构设计提高数据显示实时性,实测表叫该办法稳定 高效,可根据不同场景需要切换不同模式处理数 据,良好应对不同场景的需要。本文时其他字符协 议报文解析并需要实时显示的设tf‘具有一定的参 考意义。 参考文献 [1j李长真.(;I S全球定伉系统LJ].现代物 知识.2000. 12(C00):9()292. 第1期 刘赋山,等:一种新的NMEA0183协议解析方法实现 73 [2] JAMES BAO—YEN TSUI.GPS软件接收机基础 [M].2版.北京:电子工业出版社,2008:68—76. [3] 张文军.GPS与嵌入式系统软硬件接口及导航信息 提取软件[J].计算机工程,20O5,31(18):2102212. onal Marine Electronics Association.NMEA [4] The Nati0183 standard for interfacing marine electronic de— [7]王映辉,王英杰,王彦君, 等.基于MVC的软件界面 体系结构研究与实现[J]. 计算机应用研究,2004(9): 188—19O. 作者简介 刘赋山 (1992一),男,硕士生,研究方向为卫 星导航技术。 vices[EB/OL].1998—03—30.http://www.nmea. org/. [5] 曹婷婷,高玉.GPS中NMEA 0183协议的应用[J]. 电子工程师,2006,32(10):8-11. 郭承军 (1985一),男,博士生,研究方向为 GNSS互换性与泛在位置服务、新时空体系、完好 性及增强系统。 1-6] LIGER F,QUEEN C M,WILTON P.C#字符串和 正则表达式参考手册[M].刘乐亭,译.北京:清华大 学出版,2003. 贾振东 (1993一),男,硕士生,研究方向为卫 星导航技术。 A New Method of NMEAO8 1 3 Protocol Parsing LIU Fushan,GUO Chengjan,JIA Zhendong (University of Electronic Science and Technology of China,Chengdu 611731,China) Abstract:NMEA0183 protocol parsing module is crucial in a navigation system software module,the module of the robustness and efficiency is directly related to the performance of the whole navigation system.In order to timely and effective resolution NMEA data flow, separate processing NMEA data flow analysis and data display,reduce the coupling of par— sing module and display module,put forward a kind of based on regular expressions,and based on the MVC architecture of NMEA0 1 8 3 protocol parsing methods.The whole parsing module can be divided into four stages,the original NMEA data stream storage,NMEA data flow efficient parsing,NMEA data validation,NMEA data show.At present the method has been applied to the GPS navigation products,the measured show that the analytical module, high efficiency and reliable data flow analysis showed good real-time. Keywords:GPS;NMEA0 1 83;parsing;Regular expressions;MVC (上接第69页) The Data Communication Based on Beidou GBAS LIU Tianheng,CHEN Min gJian,ZHANG Shuwei,ZHOU Runyang,LI Ying (1.College of Navigation and Aerospace Engineering。Information Engineering University。 Zhengzhou 450001,China;2.BeiDou Navigation Technology Collaborative In formation Center,Zhengzhou 450001,China) Abstract:Data communication is an indispensable part of improving the navigation accu— racy and positioning accuracy of the Beidou GBAS,and plays a key role in the system.Based on the Beidou GBAS,the paper gives a brief introduction to the system,and discusses the TCP/IP and R¥232 mode used by the reference station and the data center for data communi— cation.For the user and data center,the paper analysis of the NMEA0183 information.NR— TIP and RTCM data,describes the improvement of RTCM3.2 over the previous version.Fi— nally,the paper summaries the role of data communication in Beidou GBAS。and prospects the application foreground. Keywords:BDS GBAS;TCP/IP;NMEA0l83;NTRIP;RTCM 

因篇幅问题不能全部显示,请点此查看更多更全内容