1 NMEA-0183協(xié)議
1.1 協(xié)議簡介
NEMA協(xié)議是為了在不同的GPS導航設備中建立統(tǒng)一的RTCM(海事無線電技術委員會)標準,由美國國家海洋電子協(xié)會(The National Marine ElectronicsAssociation,NMEA)制定的。目前大部分的GPS接收設備都遵循這一標準。該接口協(xié)議定義了在波特率為19 200的串口數(shù)據(jù)總線上傳輸電信號的需求、數(shù)據(jù)傳輸協(xié)議和時間以及詳細的語句格式。
1.2 NMEA-0183語句格式
NMEA-0183語句格式一般為:“$”為語句起始標志;“,”為域分隔符;“*”為校驗和識別符,其后面的兩位數(shù)為校驗和;“<CR>/<LF>”為終止符,表示回車、換行。本文以GPGGA信息語句為例,進行詳細分析。
GPGGA:Global Positioning System Fix Data(GGA)(GPS定位信息)
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
<1>UTC時間(世界協(xié)調時),hhmmss(時分秒);
<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>正在使用解算位置的衛(wèi)星數(shù)量(00~12)(前面的0也將被傳輸);
<8>HDOP水平精度因子(0.5~99.9);
<9>海拔高度(-9 999.9 m~99 999.9 m);
<10>地球橢球面相對大地水準面的高度;
<11>差分時間(從最近一次接收到差分信號開始的秒數(shù),如果不是差分定位將為空);
<12>差分站ID號:0000~1023(前面的0也將被傳輸,如果不是差分定位將為空)。
2 MSComm控件的應用及數(shù)據(jù)采集
2.1 端口設置
由于GPS串行通訊參數(shù)是固定的“波特率=19200;無奇偶校驗;數(shù)據(jù)位=8;停止位=1”,在編程時直接設置串口通訊參數(shù)便可以了。
主要程序段為:NMEA協(xié)議設置 MSComml.Settings=“19200,n,8,1”。
2.2 數(shù)據(jù)采集
MSComm控件提供兩種處理通信的方式:事件驅動方式和查詢方式
(1)事件驅動方式
On Comm事件被用于捕獲Communications事件及錯誤。因此可在MSComm控件的On Comm事件中加入處理函數(shù),以便在文本框區(qū)實時顯示、數(shù)據(jù)采集。
(2)查詢方式
查詢方式實質上還是事件驅動,在程序的每個關鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯誤。
本程序采用查詢式串口通訊,利用Timer控件,程序如下:
3 核心功能及其VB實現(xiàn)
軟件的核心部分主要是對獲取數(shù)據(jù)進行預處理以提取完整的語句信息,同時解析出測向所需的位置、時間以及航向信息。
3.1 數(shù)據(jù)預處理
(1)預處理必要性。實際工作中,由于各種外界條件的影響接收機獲取的衛(wèi)星數(shù)據(jù)可能存在質量問題,同時采用查詢方式從串口提取數(shù)據(jù)也存在自身的限制性,比如:常常出現(xiàn)一條完整的語句(GPGGA/GPRMC語句等)在一次查詢中只接收了其中一部分的情況,我們需要對獲取的信息采用一些必要的預處理措施,以便于得到完整的語句信息進行解析。[!--empirenews.page--]
(2)預處理思路。鑒于NMEA 0183協(xié)議規(guī)范,一條完整的衛(wèi)星語句是始于“$”,終于“CrLf(回車換行)”,我們可以利用VB內(nèi)部的字符串函數(shù)Split()函數(shù)對從串口緩沖區(qū)獲取的語句塊進行分割,以CrLf為分割標志,將分割結果存放于一個字符串數(shù)組中,然后檢查數(shù)組中的每一個字符串是否是一條完整的語句,剔除不完整信息。
(3)核心代碼
3.2 信息提取
程序以Select…Case…分支選擇結構按照不同語句的句頭標識(如$GPGGA,$HEHDT等)進行相應語句的解析模塊選擇。
(1)時間、位置信息解析模塊
(2)航向信息解析模塊
航向信息語句格式:$HEHDT,23.254,T*cc
(3)衛(wèi)星信息解析模塊
衛(wèi)星信息語句格式:
4 信息顯示
經(jīng)過以上數(shù)據(jù)采集、數(shù)據(jù)預處理以及信息解析過程,我們已經(jīng)獲得了測向工程中所需要的位置信息、海拔高程信息以及航向角度信息。實現(xiàn)航向信息的圖形化顯示的實現(xiàn)思路:可以采用表盤式顯示方式,以粗短針表示航向角度的整數(shù)度數(shù),以細長針表示小數(shù)位置的航向度數(shù)。代碼實現(xiàn)方式如下:[!--empirenews.page--]
軟件界面整體效果圖如圖1所示。
5 結 語
本文利用VB6.0 MSComm控件實現(xiàn)了GPS接收機定位測向功能的軟件開發(fā),通過對GPS通訊NMEA協(xié)議的分析,以GPGGA語句的“$GPGGA”串為例,給出了開發(fā)GPS各項數(shù)據(jù)處理的方法。該方法具有簡單、高效、實用的特點,并具有良好的實時性。該算法一般應用于車載、戶外高山測量、以及實時動態(tài)物體的定位和測向。也可用于實現(xiàn)導彈飛行過程中或快速移動物體的方向測量和控制。