999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種新的NMEA0183協議解析方法實現

2017-05-16 00:37:10劉賦山郭承軍賈振東
全球定位系統 2017年1期

劉賦山,郭承軍,賈振東

(電子科技大學 電子科學技術研究院,四川 成都 611731)

?

一種新的NMEA0183協議解析方法實現

劉賦山,郭承軍,賈振東

(電子科技大學 電子科學技術研究院,四川 成都 611731)

NMEA0183 協議解析模塊是導航系統中至關重要的軟件模塊,該模塊的健壯性和高效性直接關系到整個導航系統的性能。為了能及時并高效解析NMEA數據流,分開處理NMEA數據流解析與數據顯示,降低解析模塊與顯示模塊的耦合性,提出一種基于正則表達式和MVC架構的NMEA0183協議解析方法。整個解析模塊可分為四個階段,原始NMEA數據流存儲,NMEA數據流高效解析,NMEA數據校驗,NMEA數據顯示。目前該方法已應用到GPS 導航產品中,實測表明,該解析模塊高效可靠,數據流解析顯示實時性好。

GPS;NMEA0813;解析;正則表達式;MVC

0 引 言

伴隨著導航技術的發展與應用,我國很多領域的生產力水平得到提高,人們的生活也更方便,對我國科技的進步和國力的壯大有著重大的意義。GPS衛星導航系統是目前全球內使用最廣泛的全球定位系統,其中GPS模塊通過空間部分提供的信息計算出自己當前的位置速度等信息,然后通過這些信息用NMEA0813協議封裝,并通過串口發送給數據處理中心進行處理[1]。數據處理中心的最主要的任務就是保證處理由GPS模塊發送過來的數據的可靠性、高有效性。但如今有部分產品需要保證正確高效解析NMEA數據的同時又要保證數據顯示的實時性[2],本文運用了正則表達式與MVC架構相結合的方式,實現了一種高效穩定又保證一定實時性數據顯示的方法。

1 可行性分析

1.1 NMEA0183協議簡介

NMEA0183 協議是由美國國家海洋電子協會開發、維護并發布的標準,用于航海遠洋時使用的電子儀器之間的通信[4]。目前大部分GPS 接收設備都遵循這一標準。 該接口協議定義了在波特率為4 800 的串口數據總線上傳輸的電器信號需求、數據傳輸協議和時間,以及詳細的句型格式。 NMEA0183 協議的數據以“句子”為單位進行發送,每個“句子”的結構如圖1 所示。 假如數據域中的某個值無效,該值將被簡單的忽略,但對應的仍需發送。

1.2 正則表達式簡介

正則表達式被作為用來描述其稱之為“正則集的代數”的一種表達式,因而采用了“正則表達式”這個術語[6]。正則表達式在基于文本的編輯器和搜索工具中占據著一個非常重要的地位,它是對字符串操作的一種邏輯公式,是用事先定義好的一些特定字符及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。

給定一個正則表達式和另一個字符串,可以達到如下的目的:

1) 給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”);

2) 可以通過正則表達式,從字符串中獲取想要的特定部分。

正則表達式的特點是:

1) 靈活性、邏輯性和功能性非常強;

2) 可以迅速地用極簡單的方式達到字符串的復雜控制。

1.3 MVC架構簡介

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯[7]。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中,能有效保證輸出的實時性和減輕代碼之間的干擾性。

視圖層和業務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個應用的業務流程或者業務規則的改變只需要改動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,07,1.0,9.0,M,,,,0000*18 為GGA格式的數據樣例,該數據以$GPGGA開頭,以結尾,相對應的,用正則表達式去匹配這個數據時,首先考慮到頭匹配,頭是以$GPGGA開頭,則模式字符串開頭應為$GPGGA,考慮到該數據時以結尾,在標志頭$GPGGA與之間有許多的符號可以用’。*’去匹配。萬能匹配符號’。’可以匹配除(換行符)以外的任意字符,而’*’是匹配前一個字符0或無限多次,所以’。*’能夠匹配標志頭$GPGGA與之間的符號。GGA格式的數據的匹配模式就設定為’$GPGGA.*’,同理,解析RMC格式的數據時設定匹配模式為’$GPRMC.*’就可以了。此時,利用正則表達式解析NMEA0183數據的高效性就體現出來了,利用正則表達式去匹配NMEA0183中的數據不需要逐個對比確認,只需要將頭尾匹配對應,則判定該數據為NMEA0183中具體哪種格式的數據,節省了解析的時間,增強了解析的效率。尋找出對應的格式后,將語句以’,’區分開,$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*hh顯示出不同信息有其固定的位置,按照位置將不同信息提取出來即可。

2.2 GGA格式數據解析部分代碼實現

NMEAText=”'$GPGGA,235949.042,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*45

$GPGLL,0000.0000,N,00000.0000,E,235949.042,V,N*47

$GPGSA,A,1,,,,,,,,,,,,,,,*1E

$GPGSV,1,1,00*79

$GPRMC,235949.042,V,0000.0000,N,00000.0000,E,,,140209,,,N*7E

$GPVTG,,T,,M,,N,,K,N*2

”'

pattern=re.compile(r'$GPGGA.*')

match=pattern.match(NMEAText)

if match:

print match.group()

3 數據正確性檢測

數據在傳輸的過程中可能出現各種各樣的錯誤導致傳輸的數據錯誤,為了確保所采集的GPS數據的可靠性,必須進行檢驗和的計算與比較[5]。在每條NMEA0183協議格式數據的最后有個數據校驗和hh為’$’和’*’之間的所有字符按位異或的結果,并將其高4位和低4位各用一個十六進制數(字母大寫)表示出來。為此,需要進一步編寫代碼去校驗數據的正確性。以下為校驗和正確性檢測代碼實現。

def transSum(checkSum):

numberCollection='0123456789ABCDEFG

HIJKLMNOPQRSTUVWXYZ'

high=checkSum[0]

low=checkSum[1]

return numberCollection.index(high)* 16+numberCollection.index(low)

testString=′GPRMC,235949.042,V,0000.0000,N,00000.0000,E,,,140209,,,N′

result=′7E′

count=0

for char in testString:

count^=ord(char)

if transSum(result)==count:

print ′Yes:the data is right′

else:

print ′Error: wrong data′

3.1 MVC架構設計

MVC架構分三個部分:Model, Controller, View, 六種NMEA0183數據格式對應六種Model,Model用來對NMEA格式數據進行分類存儲和提供View顯示的數據的來源。Controller用來區分不同NMEA格式數據和監聽Model數據的變化并將其顯示到View上面。View用來實時顯示Controller傳遞過來的數據。因為通過串口接收的NMEA0183數據流中各個格式的數據順序并沒有規律,根據不同數據格式將數據存儲于對應的Model中并利用Controller去監聽各個Model的變化,然后顯示到各個View上去。

3.2 實時顯示數據

在程序中可根據需求選擇實時查看NMEA中不同格式的數據,不同格式的數據有不同的視圖對應。圖3為實時解析并顯示的數據視圖。

4 性能分析與測試

可對GPS報文文件進行一次掃描,也可通過串口傳輸報文數據并實時解析并顯示。在對GPS報文文件進行一次性掃描的模式下,有著較高的解析效率,用該程序解析了一個包含5000條GPS報文的文件并未發現任何錯誤,該程序能很好的應對需要一次性掃描大量GPS報文的情況。而在實時解析顯示模式下,也有著十分良好的實時顯示性,但相比一次性掃描模式的解析錯誤率較高。

5 結束語

本文針對NMEA0183協議的特點,采用正則表達式的匹配技術進行高效解析,應用了MVC架構設計提高數據顯示實時性,實測表明該方法穩定高效,可根據不同場景需要切換不同模式處理數據,良好應對不同場景的需要。本文對其他字符協議報文解析并需要實時顯示的設計具有一定的參考意義。

[1] 李長真.GPS 全球定位系統[J].現代物理知識,2000,12(C00):90292.

[2] JAMES BAO-YEN TSUI. GPS軟件接收機基礎[M]. 2版. 北京: 電子工業出版社, 2008: 68-76.

[3] 張文軍.GPS與嵌入式系統軟硬件接口及導航信息提取軟件[J].計算機工程,2005,31 (18):2102212.

[4] The National Marine Electronics Association.NMEA 0183 standard for interfacing marine electronic devices [EB/OL]. 1998-03-30. http://www.nmea.org/.

[5] 曹婷婷,高玉.GPS中NMEA-0183協議的應用[J].電子工程師,2006,32(10):8-11.

[6] LIGER F,QUEEN C M,WILTON P. C#字符串和正則表達式參考手冊[M].劉樂亭,譯.北京:清華大學出版,2003.

[7] 王映輝,王英杰,王彥君,等.基于MVC的軟件界面體系結構研究與實現[J].計算機應用研究,2004(9):188-190.

A New Method of NMEA0813 Protocol Parsing

LIU Fushan,GUO Chengjun,JIA Zhendong

(UniversityofElectronicScienceandTechnologyofChina,Chengdu611731,China)

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 parsing module and display module, put forward a kind of based on regular expressions, and based on the MVC architecture of NMEA0183 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.

GPS; NMEA0183; parsing; Regular expressions; MVC

10.13442/j.gnss.1008-9268.2017.01.014

2016-08-26

P228.4

A

1008-9268(2017)01-0070-04

劉賦山 (1992-),男,碩士生,研究方向為衛星導航技術。

郭承軍 (1985-),男,博士生,研究方向為GNSS互換性與泛在位置服務、新時空體系、完好性及增強系統。

賈振東 (1993-),男,碩士生,研究方向為衛星導航技術。

聯系人: 劉賦山 E-mail:fsliu33@163.com

主站蜘蛛池模板: 日本欧美成人免费| 精品国产免费观看| 久久久久国色AV免费观看性色| 欧美啪啪一区| 久久a毛片| 自拍偷拍欧美日韩| jizz国产在线| 久青草免费在线视频| 亚洲天堂成人在线观看| 99这里只有精品在线| 亚洲国产看片基地久久1024| 免费国产黄线在线观看| 国产午夜福利在线小视频| 91精品啪在线观看国产91| 国产成年女人特黄特色大片免费| 国产高清在线精品一区二区三区| 亚洲综合久久成人AV| 99久久亚洲综合精品TS| 国产精品一线天| 71pao成人国产永久免费视频| 国产成人精品优优av| 综合色区亚洲熟妇在线| 人妻无码AⅤ中文字| 国产亚洲精品自在久久不卡| 中文字幕在线欧美| 久久久精品久久久久三级| 在线欧美a| 久久黄色小视频| 69精品在线观看| 国产一区二区色淫影院| 亚洲av无码牛牛影视在线二区| 丰满人妻被猛烈进入无码| a网站在线观看| 中文字幕乱码二三区免费| 国产人碰人摸人爱免费视频| 亚洲无码高清免费视频亚洲| 亚洲精品视频免费| 精品三级在线| 亚洲欧美自拍一区| 狠狠色狠狠色综合久久第一次| 日韩激情成人| 在线免费a视频| AV不卡无码免费一区二区三区| 高清免费毛片| 亚洲成综合人影院在院播放| 色综合久久无码网| 性激烈欧美三级在线播放| 性网站在线观看| 国产在线无码av完整版在线观看| 91黄色在线观看| 2048国产精品原创综合在线| 亚洲第一精品福利| 日韩美女福利视频| 97久久人人超碰国产精品| 91精品啪在线观看国产60岁 | 欧美成人精品一级在线观看| 97se亚洲综合不卡| 婷婷综合缴情亚洲五月伊| 欧美一区二区精品久久久| 四虎国产成人免费观看| 91精品最新国内在线播放| 无码电影在线观看| 欧美爱爱网| 91区国产福利在线观看午夜 | 久久久精品久久久久三级| 亚洲人人视频| 最新国产午夜精品视频成人| 国产综合日韩另类一区二区| 狠狠亚洲婷婷综合色香| 国产成人精品18| 国产精品一区在线观看你懂的| 国产精品视频3p| 激情综合网址| 国产精品毛片一区视频播| 久久久亚洲国产美女国产盗摄| 成人国产精品2021| 福利视频一区| 亚洲人免费视频| 国产成人AV大片大片在线播放 | 国产精品私拍99pans大尺度| 日韩精品毛片人妻AV不卡| 国产免费黄|