亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種新的NMEA0183協(xié)議解析方法實(shí)現(xiàn)

        2017-05-16 00:37:10劉賦山郭承軍賈振東
        全球定位系統(tǒng) 2017年1期
        關(guān)鍵詞:字符串實(shí)時(shí)性數(shù)據(jù)流

        劉賦山,郭承軍,賈振東

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

        ?

        一種新的NMEA0183協(xié)議解析方法實(shí)現(xiàn)

        劉賦山,郭承軍,賈振東

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

        NMEA0183 協(xié)議解析模塊是導(dǎo)航系統(tǒng)中至關(guān)重要的軟件模塊,該模塊的健壯性和高效性直接關(guān)系到整個(gè)導(dǎo)航系統(tǒng)的性能。為了能及時(shí)并高效解析NMEA數(shù)據(jù)流,分開(kāi)處理NMEA數(shù)據(jù)流解析與數(shù)據(jù)顯示,降低解析模塊與顯示模塊的耦合性,提出一種基于正則表達(dá)式和MVC架構(gòu)的NMEA0183協(xié)議解析方法。整個(gè)解析模塊可分為四個(gè)階段,原始NMEA數(shù)據(jù)流存儲(chǔ),NMEA數(shù)據(jù)流高效解析,NMEA數(shù)據(jù)校驗(yàn),NMEA數(shù)據(jù)顯示。目前該方法已應(yīng)用到GPS 導(dǎo)航產(chǎn)品中,實(shí)測(cè)表明,該解析模塊高效可靠,數(shù)據(jù)流解析顯示實(shí)時(shí)性好。

        GPS;NMEA0813;解析;正則表達(dá)式;MVC

        0 引 言

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

        1 可行性分析

        1.1 NMEA0183協(xié)議簡(jiǎn)介

        NMEA0183 協(xié)議是由美國(guó)國(guó)家海洋電子協(xié)會(huì)開(kāi)發(fā)、維護(hù)并發(fā)布的標(biāo)準(zhǔn),用于航海遠(yuǎn)洋時(shí)使用的電子儀器之間的通信[4]。目前大部分GPS 接收設(shè)備都遵循這一標(biāo)準(zhǔn)。 該接口協(xié)議定義了在波特率為4 800 的串口數(shù)據(jù)總線上傳輸?shù)碾娖餍盘?hào)需求、數(shù)據(jù)傳輸協(xié)議和時(shí)間,以及詳細(xì)的句型格式。 NMEA0183 協(xié)議的數(shù)據(jù)以“句子”為單位進(jìn)行發(fā)送,每個(gè)“句子”的結(jié)構(gòu)如圖1 所示。 假如數(shù)據(jù)域中的某個(gè)值無(wú)效,該值將被簡(jiǎn)單的忽略,但對(duì)應(yīng)的仍需發(fā)送。

        1.2 正則表達(dá)式簡(jiǎn)介

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

        給定一個(gè)正則表達(dá)式和另一個(gè)字符串,可以達(dá)到如下的目的:

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

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

        正則表達(dá)式的特點(diǎn)是:

        1) 靈活性、邏輯性和功能性非常強(qiáng);

        2) 可以迅速地用極簡(jiǎn)單的方式達(dá)到字符串的復(fù)雜控制。

        1.3 MVC架構(gòu)簡(jiǎn)介

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

        視圖層和業(yè)務(wù)層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,同樣,一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需要改動(dòng)MVC的模型層即可。因?yàn)槟P团c控制器和視圖相分離,所以很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則而不會(huì)彼此之間產(chǎn)生干擾性,數(shù)據(jù)的顯示和數(shù)據(jù)的接收存儲(chǔ)是異步執(zhí)行的,程序能夠在接收的同時(shí)能顯示數(shù)據(jù),顯示數(shù)據(jù)的同時(shí)還在接收下一個(gè)數(shù)據(jù)。圖2為MVC架構(gòu)示意圖。

        Model與View之間并不直接通信,它們直接與Controller進(jìn)行通信,Controller負(fù)責(zé)將讀取到的數(shù)據(jù)解析好放入對(duì)應(yīng)的Model中,從Model中獲取數(shù)據(jù)并進(jìn)一步解析后顯示在View上。

        1.4 可行性分析

        NMEA0183中的數(shù)據(jù)也是字符串形式存儲(chǔ),正則表達(dá)式就是針對(duì)各種字符串形式的數(shù)據(jù)進(jìn)行高效穩(wěn)定解析的方法。NMEA0183中有幾種不同格式的數(shù)據(jù)存儲(chǔ)語(yǔ)句,相對(duì)應(yīng)的可以用幾種形式的Model進(jìn)行分開(kāi)存儲(chǔ)。NMEA0183數(shù)據(jù)處理后信息顯示需要保證良好的實(shí)時(shí)性[3],使用MVC架構(gòu)進(jìn)行程序設(shè)計(jì)能將數(shù)據(jù)的解析存儲(chǔ)于數(shù)據(jù)實(shí)時(shí)顯示相分離,兩者異步執(zhí)行,能很好的保證數(shù)據(jù)信息顯示的實(shí)時(shí)性。因此,可以利用正則表達(dá)解析加MVC架構(gòu)對(duì)NMEA0183協(xié)議進(jìn)行有效解析的同時(shí)保證數(shù)據(jù)信息顯示的實(shí)時(shí)性。

        2 利用正則表達(dá)式解析數(shù)據(jù)

        2.1 數(shù)據(jù)格式分析

        在NMEA0183中有六種不同的輸出協(xié)議的格式。主要分析GGA和RMC兩種格式的數(shù)據(jù)?!鏕PGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,,0000*18 為GGA格式的數(shù)據(jù)樣例,該數(shù)據(jù)以$GPGGA開(kāi)頭,以結(jié)尾,相對(duì)應(yīng)的,用正則表達(dá)式去匹配這個(gè)數(shù)據(jù)時(shí),首先考慮到頭匹配,頭是以$GPGGA開(kāi)頭,則模式字符串開(kāi)頭應(yīng)為$GPGGA,考慮到該數(shù)據(jù)時(shí)以結(jié)尾,在標(biāo)志頭$GPGGA與之間有許多的符號(hào)可以用’。*’去匹配。萬(wàn)能匹配符號(hào)’?!梢云ヅ涑?LF>(換行符)以外的任意字符,而’*’是匹配前一個(gè)字符0或無(wú)限多次,所以’。*’能夠匹配標(biāo)志頭$GPGGA與之間的符號(hào)。GGA格式的數(shù)據(jù)的匹配模式就設(shè)定為’$GPGGA.*’,同理,解析RMC格式的數(shù)據(jù)時(shí)設(shè)定匹配模式為’$GPRMC.*’就可以了。此時(shí),利用正則表達(dá)式解析NMEA0183數(shù)據(jù)的高效性就體現(xiàn)出來(lái)了,利用正則表達(dá)式去匹配NMEA0183中的數(shù)據(jù)不需要逐個(gè)對(duì)比確認(rèn),只需要將頭尾匹配對(duì)應(yīng),則判定該數(shù)據(jù)為NMEA0183中具體哪種格式的數(shù)據(jù),節(jié)省了解析的時(shí)間,增強(qiáng)了解析的效率。尋找出對(duì)應(yīng)的格式后,將語(yǔ)句以’,’區(qū)分開(kāi),$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>*hh顯示出不同信息有其固定的位置,按照位置將不同信息提取出來(lái)即可。

        2.2 GGA格式數(shù)據(jù)解析部分代碼實(shí)現(xiàn)

        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 數(shù)據(jù)正確性檢測(cè)

        數(shù)據(jù)在傳輸?shù)倪^(guò)程中可能出現(xiàn)各種各樣的錯(cuò)誤導(dǎo)致傳輸?shù)臄?shù)據(jù)錯(cuò)誤,為了確保所采集的GPS數(shù)據(jù)的可靠性,必須進(jìn)行檢驗(yàn)和的計(jì)算與比較[5]。在每條NMEA0183協(xié)議格式數(shù)據(jù)的最后有個(gè)數(shù)據(jù)校驗(yàn)和hh為’$’和’*’之間的所有字符按位異或的結(jié)果,并將其高4位和低4位各用一個(gè)十六進(jìn)制數(shù)(字母大寫)表示出來(lái)。為此,需要進(jìn)一步編寫代碼去校驗(yàn)數(shù)據(jù)的正確性。以下為校驗(yàn)和正確性檢測(cè)代碼實(shí)現(xiàn)。

        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架構(gòu)設(shè)計(jì)

        MVC架構(gòu)分三個(gè)部分:Model, Controller, View, 六種NMEA0183數(shù)據(jù)格式對(duì)應(yīng)六種Model,Model用來(lái)對(duì)NMEA格式數(shù)據(jù)進(jìn)行分類存儲(chǔ)和提供View顯示的數(shù)據(jù)的來(lái)源。Controller用來(lái)區(qū)分不同NMEA格式數(shù)據(jù)和監(jiān)聽(tīng)Model數(shù)據(jù)的變化并將其顯示到View上面。View用來(lái)實(shí)時(shí)顯示Controller傳遞過(guò)來(lái)的數(shù)據(jù)。因?yàn)橥ㄟ^(guò)串口接收的NMEA0183數(shù)據(jù)流中各個(gè)格式的數(shù)據(jù)順序并沒(méi)有規(guī)律,根據(jù)不同數(shù)據(jù)格式將數(shù)據(jù)存儲(chǔ)于對(duì)應(yīng)的Model中并利用Controller去監(jiān)聽(tīng)各個(gè)Model的變化,然后顯示到各個(gè)View上去。

        3.2 實(shí)時(shí)顯示數(shù)據(jù)

        在程序中可根據(jù)需求選擇實(shí)時(shí)查看NMEA中不同格式的數(shù)據(jù),不同格式的數(shù)據(jù)有不同的視圖對(duì)應(yīng)。圖3為實(shí)時(shí)解析并顯示的數(shù)據(jù)視圖。

        4 性能分析與測(cè)試

        可對(duì)GPS報(bào)文文件進(jìn)行一次掃描,也可通過(guò)串口傳輸報(bào)文數(shù)據(jù)并實(shí)時(shí)解析并顯示。在對(duì)GPS報(bào)文文件進(jìn)行一次性掃描的模式下,有著較高的解析效率,用該程序解析了一個(gè)包含5000條GPS報(bào)文的文件并未發(fā)現(xiàn)任何錯(cuò)誤,該程序能很好的應(yīng)對(duì)需要一次性掃描大量GPS報(bào)文的情況。而在實(shí)時(shí)解析顯示模式下,也有著十分良好的實(shí)時(shí)顯示性,但相比一次性掃描模式的解析錯(cuò)誤率較高。

        5 結(jié)束語(yǔ)

        本文針對(duì)NMEA0183協(xié)議的特點(diǎn),采用正則表達(dá)式的匹配技術(shù)進(jìn)行高效解析,應(yīng)用了MVC架構(gòu)設(shè)計(jì)提高數(shù)據(jù)顯示實(shí)時(shí)性,實(shí)測(cè)表明該方法穩(wěn)定高效,可根據(jù)不同場(chǎng)景需要切換不同模式處理數(shù)據(jù),良好應(yīng)對(duì)不同場(chǎng)景的需要。本文對(duì)其他字符協(xié)議報(bào)文解析并需要實(shí)時(shí)顯示的設(shè)計(jì)具有一定的參考意義。

        [1] 李長(zhǎng)真.GPS 全球定位系統(tǒng)[J].現(xiàn)代物理知識(shí),2000,12(C00):90292.

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

        [3] 張文軍.GPS與嵌入式系統(tǒng)軟硬件接口及導(dǎo)航信息提取軟件[J].計(jì)算機(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協(xié)議的應(yīng)用[J].電子工程師,2006,32(10):8-11.

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

        [7] 王映輝,王英杰,王彥君,等.基于MVC的軟件界面體系結(jié)構(gòu)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,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-),男,碩士生,研究方向?yàn)樾l(wèi)星導(dǎo)航技術(shù)。

        郭承軍 (1985-),男,博士生,研究方向?yàn)镚NSS互換性與泛在位置服務(wù)、新時(shí)空體系、完好性及增強(qiáng)系統(tǒng)。

        賈振東 (1993-),男,碩士生,研究方向?yàn)樾l(wèi)星導(dǎo)航技術(shù)。

        聯(lián)系人: 劉賦山 E-mail:fsliu33@163.com

        猜你喜歡
        字符串實(shí)時(shí)性數(shù)據(jù)流
        基于規(guī)則實(shí)時(shí)性的端云動(dòng)態(tài)分配方法研究
        汽車維修數(shù)據(jù)流基礎(chǔ)(下)
        一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
        基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實(shí)時(shí)性仿真
        航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
        基于數(shù)據(jù)流聚類的多目標(biāo)跟蹤算法
        北醫(yī)三院 數(shù)據(jù)流疏通就診量
        一種新的基于對(duì)稱性的字符串相似性處理算法
        一種車載Profibus總線系統(tǒng)的實(shí)時(shí)性分析
        依據(jù)字符串匹配的中文分詞模型研究
        亚洲无AV码一区二区三区| 亚洲国产精品ⅴa在线观看| 日本丰满人妻xxxxxhd| 精品一区二区av天堂| 中文字幕视频二区三区| 蜜桃一区二区三区视频网址| 18禁真人抽搐一进一出在线| 欧美日韩国产色综合一二三四| av网站影片在线观看| 精品露脸熟女区一粉嫩av| 人妻少妇乱子伦精品无码专区电影| 国产成人无码一二三区视频| 国产三级国产精品三级在专区| 亚洲男人免费视频网站| 欧美狠狠入鲁的视频777色| 人妻丰满熟妇AV无码区HD| av网站入口在线免费观看| 国产自拍视频在线观看免费 | 国产好大好硬好爽免费不卡| 国产三级在线视频播放| 国产91熟女高潮一曲区| 91伦理片视频国产精品久久久| 末发育娇小性色xxxx| 亚洲免费av电影一区二区三区| 一区二区三区精品亚洲视频| 国产精品情侣呻吟对白视频| 日韩人妻无码一区二区三区久久99| 人妻无码ΑV中文字幕久久琪琪布| 一区二区三区四区黄色av网站 | 五月天精品视频在线观看| 免费国人成人自拍视频| 国产性感丝袜在线观看| 亚洲 另类 日韩 制服 无码| 国产偷2018在线观看午夜| 国产理论亚洲天堂av| 免费无码精品黄av电影| 中文乱码人妻系列一区二区| 国产毛片三区二区一区| 少妇高潮太爽了在线看| 国产chinese男男gay视频网| 欧美一级视频在线|