1 引 言 全球定位系統(GPS)是20世紀70年代由美國陸海空三軍聯合研制的空間衛星導航定位系統,其目的是為美國軍方提供實時精確的定位、導航和授時等服務。通常GPS系統由3個部份組成:空間部分:包括24顆GPS衛星;地面控制部分:對GPS衛星實施監控;用戶部分:接收來自GPS衛星的定位等信息,通常包括天線和接收機等設備。GPS系統在進行定位時,必須要確定用戶所在的位置(包括x,y,z三個坐標),同時還要考慮到衛星時鐘與接收機時鐘之間的誤差t,要解算4個未知量必須建立4個方程,通常可以通過測量衛星與-用戶之間的偽距,來建立相應的方程,因此需要同時觀測4顆衛星,才能實現精確定位。隨著時代發展,GPS系統不再局限于美國軍方,已被廣泛應用于社會生活的各個方面,從大地測繪到車輛導航都能找到其身影。鑒于衛星導航技術在民用和軍事領域的重要意義,我國也建立了相應的“北斗導航系統”,但目前我國應用最為廣泛的還是GPS系統。本文針對GPS系統,介紹了定位信息在GPS接收機與PC機之間的傳輸和提取方法。 2 定位信息的格式 要實現定位信息的提取和顯示,首先要實現定位信息的傳輸,即通過相應的接口實現GPS接收機與PC機之間的通信。本文介紹的接收機采用SiRF Technology公司的GPS接收芯片,通過天線接收GPS衛星信號,并進行相應處理產生定位信息,再通過串口(RS 232)輸出。GPS通訊協議較多,本文采用應用最為廣泛的NMEA—0183協議。在此協議中包括了“$GPGGA”、“$GPGSA”、“$GPGSV”和“$GPRMC”等格式,本文以最簡格式“$GPRMC”語句為例介紹協議中各數據段的含義。例如:$GPRMC,161022.A,3212.875,N,11893.578,E,O.O,11O.4,140406,2.3,W,A*302。 在此列中各數據段通過逗號分開,其中: $GPRMC為幀頭,標識后續幀內數據組成結構;161022為UTC標準時間,格式為“hh/mm/ss”;A表示數據有效,如為V則表示可跟蹤衛星小于3顆;3212.875為緯度值,格式為“ddmm.mmmm”;N表示北緯,如為S則表示南緯;11893.578為經度值,格式為“dddmm.mmmm”;E表示東經,如為W則表示西經;0.0表示速度;110.4表示方位角,從000.0°~359.9°;140406為UTC標準日期,格式為“mm/dd/yy”;2.3表示地磁變化,從000.O°~180.0°;W表示地磁變化方向,包括w或E; 在這些數據中,本文主要關心的是地理坐標和時間,即緯度、經度和UTC日期、時間。 3 定位信息的傳輸和提取 定位信息的傳輸,即GPS接收機與PC機之間的通信,通常采用串口來實現。本文中采用VB提供的MSComm控件來編寫串口程序達到通信的目的。MSComm控件被廣泛用來實現串口通信,對于他的介紹這里不再贅述。在本文中實現具體的串口通信時,必須對MSComm控件的相關屬性進行設置。在默認設置基礎上需要進行更改的設置包括下面3個部分: (1)考慮到GPS串口通信采用固定的參數,因此要將MSComm控件中的Settings屬性設置為“4800,N,8,1”,即波特率為4 800 b/s,無奇偶校驗位,數據位為8,停止位為1。 (2)根據所采用的接收機的不同,還需對MSComm控件中的inputMode屬性進行設置,本文中采用“comInputMode Text”方式。 (3)根據所選擇的串口將MSComm控件中的Commport屬性設置為相應的串口號,本文中為“1”。 定位信息的提取,包括2個部分: (1)從“$GPRMC”數據列中提取經緯度等信息; (2)將這些信息在文本框內顯示。這一工作可以在MSComm控件中的OnComm事件中通過編程具體實現。流程圖如圖1所示。 部分代碼如下: 首先,將緩存中的“$GPRMC”格式的定位信息賦給字符串變量“GPRMC”,根據前面介紹過的“$GPRMC”的格式,通過相應的語句從變量“GPRMC”中提取出所需的緯度、經度、速度和時間日期等信息,并賦給相應的變量。需要注意的是,在提取時間信息時需要將UTC時間轉換為北京時間,并對24進行模運算,以確保時間的準確。然后,將提取出來的定位信息在預先設計的文本框中顯示出來。通過這些步驟即完成定位信息的提取工作,具體的效果如圖2所示。 4 結語 本文介紹了一種使用VB實現GPS定位信息提取的方法,具有簡單、實用的特點。通過這一方法可以實現GPS接收機和PC機之間的數據通信,并能將所需的定位信息直觀地在相應窗口顯示出來。 |