GPS的定位測向系統的軟件實(shí)現
1 NMEA-0183協(xié)議
本文引用地址:http://dyxdggzs.com/article/152011.htm1.1 協(xié)議簡(jiǎn)介
NEMA協(xié)議是為了在不同的GPS導航設備中建立統一的RTCM(海事無(wú)線(xiàn)電技術(shù)委員會(huì ))標準,由美國國家海洋電子協(xié)會(huì )(The National Marine ElectronicsAssociation,NMEA)制定的。目前大部分的GPS接收設備都遵循這一標準。該接口協(xié)議定義了在波特率為19 200的串口數據總線(xiàn)上傳輸電信號的需求、數據傳輸協(xié)議和時(shí)間以及詳細的語(yǔ)句格式。
1.2 NMEA-0183語(yǔ)句格式
NMEA-0183語(yǔ)句格式一般為:“$”為語(yǔ)句起始標志;“,”為域分隔符;“*”為校驗和識別符,其后面的兩位數為校驗和;“CR>/LF>”為終止符,表示回車(chē)、換行。本文以GPGGA信息語(yǔ)句為例,進(jìn)行詳細分析。
GPGGA:Global Positioning System Fix Data(GGA)(GPS定位信息)
$GPGGA,1>,2>,3>,4>,5>,6>,7>,8>,9>,M,10>,M,11>,12>*hhCR>LF>
1>UTC時(shí)間(世界協(xié)調時(shí)),hhmmss(時(shí)分秒);
2>緯度:格式為度度分分、分分分分(ddmm.mmmm,前面的0也將被傳輸);
3>緯度半球N(北半球)或者S(南半球);
4>經(jīng)度:格式為度度分分、分分分分(ddmm.mmmm,前面的0也將被傳輸);
5>經(jīng)度半球E(東經(jīng))或W(西經(jīng));
6>GPS狀態(tài):0=未定位,1=非差分定位,2=差分定位,6=正在估算;
7>正在使用解算位置的衛星數量(00~12)(前面的0也將被傳輸);
8>HDOP水平精度因子(0.5~99.9);
9>海拔高度(-9 999.9 m~99 999.9 m);
10>地球橢球面相對大地水準面的高度;
11>差分時(shí)間(從最近一次接收到差分信號開(kāi)始的秒數,如果不是差分定位將為空);
12>差分站ID號:0000~1023(前面的0也將被傳輸,如果不是差分定位將為空)。
2 MSComm控件的應用及數據采集
2.1 端口設置
由于GPS串行通訊參數是固定的“波特率=19200;無(wú)奇偶校驗;數據位=8;停止位=1”,在編程時(shí)直接設置串口通訊參數便可以了。
主要程序段為:NMEA協(xié)議設置 MSComml.Settings=“19200,n,8,1”。
2.2 數據采集
MSComm控件提供兩種處理通信的方式:事件驅動(dòng)方式和查詢(xún)方式
(1)事件驅動(dòng)方式
On Comm事件被用于捕獲Communications事件及錯誤。因此可在MSComm控件的On Comm事件中加入處理函數,以便在文本框區實(shí)時(shí)顯示、數據采集。
![]() |
(2)查詢(xún)方式
查詢(xún)方式實(shí)質(zhì)上還是事件驅動(dòng),在程序的每個(gè)關(guān)鍵功能之后,可以通過(guò)檢查CommEvent屬性的值來(lái)查詢(xún)事件和錯誤。
本程序采用查詢(xún)式串口通訊,利用Timer控件,程序如下:
![]() |
3 核心功能及其VB實(shí)現
軟件的核心部分主要是對獲取數據進(jìn)行預處理以提取完整的語(yǔ)句信息,同時(shí)解析出測向所需的位置、時(shí)間以及航向信息。
3.1 數據預處理
(1)預處理必要性。實(shí)際工作中,由于各種外界條件的影響接收機獲取的衛星數據可能存在質(zhì)量問(wèn)題,同時(shí)采用查詢(xún)方式從串口提取數據也存在自身的限制性,比如:常常出現一條完整的語(yǔ)句(GPGGA/GPRMC語(yǔ)句等)在一次查詢(xún)中只接收了其中一部分的情況,我們需要對獲取的信息采用一些必要的預處理措施,以便于得到完整的語(yǔ)句信息進(jìn)行解析。
評論