劉 巖,汪劍云,吳北平,李 兵,聶小波,肖 昶
(1.中國地質大學信息工程學院,湖北 武漢430074;2.湖北省基礎地理信息中心,湖北 武漢430071)
基于VB.NET的GPS接收機串口通信的實現(xiàn)
劉 巖1,汪劍云1,吳北平1,李 兵2,聶小波2,肖 昶2
(1.中國地質大學信息工程學院,湖北 武漢430074;2.湖北省基礎地理信息中心,湖北 武漢430071)
首先介紹了串口通信和GPS數(shù)據(jù)格式,然后通過實例詳細討論了在VB.NET環(huán)境下應用MSComm控件實現(xiàn)計算機與GPS接收機之間利用串口傳輸并提取定位信息的方法。所設計的算法可以應用于基于PC機的車載GPS道路信息更新中。實驗表明,系統(tǒng)運行穩(wěn)定、實時性高、準確、簡便。
GPS;VB.NET;串口通信;MSComm控件

GPS是20世紀70年代由美國陸??杖娐?lián)合研制的新一代空間衛(wèi)星導航定位系統(tǒng),因其具有高精度、全天候、高效率等顯著特點,近年來被廣泛應用于車載GPS道路信息更新中。為了實現(xiàn)GPS數(shù)據(jù)接收與處理,首先就要解決計算機和GPS接收機的串口通信問題,計算機的串行端口提供了計算機和GPS接收機之間的數(shù)據(jù)傳輸通道。由于VB.NET簡單易學、編程效率高,它提供的串口通信編程方法已經(jīng)成為GPS接收機串口通信程序設計的重要方法之一,因此本文采用VB.NET提供的MSComm通信控件來實現(xiàn)GPS接收機的串口通信[1-3]。
串口通信(SerialCommunication)是一種重要的數(shù)據(jù)交換方式,是指外部設備與計算機之間通過數(shù)據(jù)線、地線、控制線等,按位(bit)進行數(shù)據(jù)傳輸?shù)囊环N通信方式,其本質是作為CPU和串行設備之間的編碼轉換器。每臺計算機至少配備一個標準的串行端口RS-232,它是計算機與GPS接收機之間的數(shù)據(jù)傳輸通道。在GPS接收機和計算機的數(shù)據(jù)傳輸過程中,只要GPS接收機一直處于正常工作的狀態(tài),就會不斷地將接收并解算出的導航定位信息通過RS-232串口傳輸?shù)接嬎銠C中。
利用VB.NET串口通信實現(xiàn)方式主要有2種:①利用VB.NET提供的串口通信控件MSComm,通過編寫的程序實現(xiàn)GPS接收機與計算機間的實時通信;②利用Windows提供的全部API動態(tài)鏈接函數(shù)進行串口通信。本文利用第一種方法實現(xiàn)GPS接收機和計算機間的通信[4-6]。
目前市場上大多使用的GPS接收機都遵守由美國國家海洋電子協(xié)會(NMEA-TheNationalMarineElectronics Association)制定的一套通信協(xié)議。該協(xié)議采用ASCII碼格式,規(guī)定了海用和陸用GPS接收機輸出的經(jīng)緯度、時間、衛(wèi)星狀態(tài)、接收機狀態(tài)等信息,大多數(shù)常見的GPS接收機、GPS數(shù)據(jù)處理軟件、導航軟件都遵守或者至少兼容這個協(xié)議,現(xiàn)在已經(jīng)作為一種廣泛使用的行業(yè)標準。
NMEA-0183協(xié)議定義了很多語句,常見的類型有:$GPGGA、$GPGSA、$GPRMC、$GPGSV以及$GPGLL等。這些數(shù)據(jù)主要由幀頭、幀尾、幀內(nèi)數(shù)據(jù)組成,通過幀頭來識別幀內(nèi)數(shù)據(jù)的結構,處理數(shù)據(jù)時可通過“$”來判斷是否為幀頭,判定后則通過讀取逗號個數(shù)進行判斷當前處理的是哪一部分的導航參數(shù),并做出相應的提取處理。每幀數(shù)據(jù)均以回車符 (

圖1 GPS數(shù)據(jù)接收截圖
通常使用的經(jīng)緯度、速度、時間等信息均可以從$ GPRMC中提取,該幀的結構如下:

<1>當前格林尼治時間(UTC),格式為mmss;<2>狀態(tài)字,A:定位成功,V:目前沒有;<3>緯度,格式為ddmm.mmmm;<4>緯度的屬性,南半球為S,北半球為N;<5>經(jīng)度格式為dddmm.mmmm;<6>經(jīng)度的屬性,東半球為E,西半球為W;<7>天線移動速度,從 000.0到 999.9節(jié);<8>相對地面方向,000.0到359.90;<9>當前日期(UTC時間),格式為:ddm;<10>磁偏角000.0到180.00;<11>磁偏方向E or W;<*>校驗和標志;
如圖1中的$GPRMC數(shù)據(jù)$GPRMC,211940,A,3044.4756,N,11453.0234,W,47.442,89.9,021000,12.4,E*54,其中,21190為格林尼治時間,A表示定位成功,3044.4756、11453.0234分別為經(jīng)緯度,47.442為天線移動的速度,89.9是方位角,021000為UTC日期,12.4為磁偏角,E為磁偏方向,*54為檢校值。
以提取經(jīng)度、緯度為例,具體的導航信息提取代碼如下:

VB.NET中的MSComm控件(M icrosoftCommunicationsControl)是Windows下串行通信編程的ActiveX控件,它提供了一系列的標準通信命令,可以通過串行端口傳輸和接收數(shù)據(jù),為應用程序提供了串行通信功能。利用 MSComm控件可以大大提高編程效率,MSComm控件可以采用輪詢或事件驅動的方法從端口獲取數(shù)據(jù),本文選擇事件驅動方法。
一般情況下,應用MSComm控件實現(xiàn)串口通信的步驟主要包括:①添加MSComm控件;②串口初始化并打開串口;③用事件驅動的方式從串口中接收 GPS數(shù)據(jù)。
3.1 MSComm控件的初始化
由于GPS接收機的串口通信參數(shù)是固定的,因此用MSComm控件編程時應先設置好串行端口的參數(shù):波特率=9600,無奇偶檢校,數(shù)據(jù)位=8,停止位=1,其主要的程序如下:

3.2 GPS定位信息的接收與提取
在了解了GPS接收的數(shù)據(jù)格式后,利用VB.NET編程時可以通過 MSComm控件的 Timer事件來接收GPS定位信息。在處理GPS數(shù)據(jù)時接收機每秒鐘觸發(fā)一次Timer事件,接收時間間隔設置為Timer1.Interval =1 000,同時將接收的數(shù)據(jù)保存在文件gpsout.txt中,具體代碼如下:


//提取 GPS語句中的經(jīng)緯度、時間、方位角和速度等信息

//在文本框里逐行顯示GPS語句

綜上所述,利用MSComm控件提取GPS數(shù)據(jù)的流程圖如圖2所示[5,6]。

圖2 GPS數(shù)據(jù)提取流程圖
本文利用VB.NET中的MSComm控件實現(xiàn)了GPS接收機的串口通信,在實際應用中串口的屬性均被封裝在控件中,避免了程序的重復性,增強了程序的可讀性。MSComm控件大大簡化了串口通信的編程,使計算機和GPS接收機之間數(shù)據(jù)傳輸速度更快,效果較好。將編寫的算法應用到基于PC機的車載GPS道路信息更新系統(tǒng)中,通過把GPS接收機和便攜式電腦的串口相連,可以快速獲取GPS定位導航信息,實驗結果證明系統(tǒng)運行穩(wěn)定、準確、簡便、實時性強。
[1] 李淑慧.VC++6.0環(huán)境下GPS接收機串口通信的實現(xiàn)[J].測繪信息與工程,2002,27(5):23-24
[2] 張令勇,高松,鐘磊.基于VB的實時獲取GPS數(shù)據(jù)信息研究與開發(fā)[J].計算機與現(xiàn)代化,2010(5):92-95
[3] 李永豐,於新國.利用GPS快速采集道路信息系統(tǒng)的研究[J].地理空間信息,2007,5(5):28-29
[4] 王華,岳麗全,岳志高.MSComm控件在VC++6.0串口通信中的應用[J].長春工程學院學報:自然科學版,2009,10(1):72-73,91
[5] 郭念.基于VB實現(xiàn)GPS數(shù)據(jù)采集與處理[J].電腦知識與技術,2009,5(1):11-12
[6] 李立早.基于MSComm控件的GPS接收機數(shù)據(jù)終端接口設計[J].現(xiàn)代電子技術,2006(20):97-98
[7] 張顯云,張勤,翟偉.基于VB6的GPS數(shù)據(jù)實時通信[J].全球定位系統(tǒng),2007(4):14-16
[8] 張慶峰.車載GPS導航系統(tǒng)的設計與實現(xiàn)[D].蘇州:蘇州大學,2006
[9] 劉穎.基于定位和電子地圖的道路信息獲取關鍵技術的研究[D].長春:吉林大學,2010
Achievement of Serial Communication of GPS Receiver Based on VB.NET
by LIU Yan
This paper firstly introduced the serial communication and GPS data format.Then,the method using MSComm component to achieve serial communication and extraction of location information between computer and GPS receiverinVB.NET environment was discussed in detail by example.The designed algorithm can be applied to PC-based in-car GPS road information updating.Experimental results show that the system is stable,high real-time,accurate and convenient.
GPS,VB.NET,serial communication,MSComm component
2011-12-20
項目來源:國家重大科技基礎設施建設資助項目(發(fā)改高技 [2007]1911)。
P228.4
B
1672-4623(2012)02-0047-03
劉巖,碩士,研究方向為3S技術集成。