沈振漢,黃華燦
(華僑大學信息科學與工程學院,福建泉州362021)
PC 機與GPS接收機的通訊程序設計與實現(xiàn)
沈振漢,黃華燦
(華僑大學信息科學與工程學院,福建泉州362021)
設計一種利用GPS模塊與計算機串口互相連接,實現(xiàn)對GPS全球定位系統(tǒng)定位信息接收;然后,通過VB的串口通信程序對數(shù)據(jù)進行處理并制作電子地圖.通過GPS接收機采集數(shù)據(jù),對收集到的數(shù)據(jù)進行處理,利用電子地圖和數(shù)據(jù)庫實現(xiàn)了定位和查詢功能.系統(tǒng)基本實現(xiàn)經(jīng)緯度、速度、海拔、時間的顯示,以及GPS數(shù)據(jù)的歷史查詢功能.
全球衛(wèi)星定位系統(tǒng);電子地圖;數(shù)據(jù)庫;串口互聯(lián)
1.1 功能流程
要實現(xiàn)定位信息的提取和顯示,首先要實現(xiàn)定位信息的傳輸,即通過相應的接口實現(xiàn)GPS接收機與PC機之間的通信.采用SiRF Technology公司的GPS接收芯片,通過天線接收GPS衛(wèi)星信號,并進行相應處理產(chǎn)生定位信息;然后,通過串口(RS 232)輸出.GPS通訊協(xié)議較多,可采用應用最為廣泛的NMEA-0183協(xié)議.NMEA0183格式以“$”開始,主要語句有GPGGA,GPVTG,GPRMC等.
圖1 主要功能流程圖Fig.1 Main function flow chart
程序的功能主要是串口通信模塊,通過串口采集GPS數(shù)據(jù)實時顯示的經(jīng)度、緯度、速度、時間,海拔高度等,以及通過連接數(shù)據(jù)庫對定位信息進行實時存儲,以便查詢.同時,通過電子地圖的設計來實現(xiàn)實時定位功能圖.系統(tǒng)的主要功能流程圖,如圖1所示.
1.2 串口通信屬性的設置
定位信息的傳輸和提取定位信息的傳輸,通常采用串口來實現(xiàn).VB提供的MSComm控件被廣泛用來實現(xiàn)串口通信,MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應用程序提供串行通訊功能.
在實現(xiàn)具體的串口通信時,必須對MSComm控件的相關屬性進行設置.在默認設置基礎上,需要進行更改的設置包括如下3個部分[1].
(1)考慮到GPS串口通信采用的是固定參數(shù),因此要將MSComm控件中的Settings屬性設置為“4800,N,8,1”,即比特率為4 800 bit·s-1,無奇偶校驗位,數(shù)據(jù)位為8,停止位為1.
(2)根據(jù)所采用的接收機的不同,需對MSComm控件中的input Mode屬性進行設置,采用“comInput ModeText”方式.
(3)根據(jù)所選擇的串口,將MSComm控件中的Commport屬性設置為相應的串口號,選擇為“1”.定位信息的提取,包括從“$GPRMC”和“$GPGGA”數(shù)據(jù)列中提取經(jīng)緯度高度等信息,以及將這些信息在文本框內顯示.這一工作可以在MSComm控件中的OnComm事件中通過編程具體實現(xiàn)[2-4].
軟件的流程圖,如圖2所示.將硬件跟PC連好,開啟COM1端口,等待數(shù)據(jù)輸入,通過提取$GPRMC格式數(shù)據(jù)中的狀態(tài)定位符(A表示有效數(shù)據(jù),V表示無效數(shù)據(jù))來判斷輸入數(shù)據(jù)是否有效.當數(shù)據(jù)有效時,通過VB函數(shù)提取“$GPRMC”中的經(jīng)緯度、時間日期、速率等參數(shù),以及“$GPGGA”格式中的高度信息,將經(jīng)緯度信息存入數(shù)據(jù)庫并顯示.
1.3 定位信息的提取
部分代碼如下:
圖2 軟件流程圖Fig.2 Software flow chart
將緩存中的“$GPRMC”格式的定位信息賦給字符串變量“$GPRMC”,根據(jù)“$GPRMC”的格式,通過相應的語句從變量“$GPRMC”中提取出所需的緯度、經(jīng)度、速度和時間日期等信息,并賦給相應的變量.需要注意的是,在提取時間信息時需要將UTC時間轉換為北京時間,并對24進行模運算,以確保時間的準確.通過提取“$GPGGA”格式信息來提取海拔高度.
由于在調試過程中發(fā)現(xiàn)高度值長度不是一個固定長度的值,不像提取“$GPRMC”格式的固定長度信息采用InStr函數(shù).然后,將提取出來的定位信息在預先設計的文本框中顯示出來.通過這些步驟即完成定位信息的提取工作.
1.4 GPS信息與數(shù)據(jù)庫
將提取的日期時間、經(jīng)緯度信息存入ACCESS數(shù)據(jù)庫,以便查詢歷史記錄可輸入日期時間查詢.其部分代碼如下:
1.5 實例分析
GOOGLE地圖上的圖都是通過航拍獲取的,清晰度和可靠度都很高,且可以提取經(jīng)緯度坐標,為地圖的制作提供了方便[5].利用提取的地圖頂點坐標的經(jīng)緯度來制作電子地圖,主要有如下4個步驟.
(1)截取GOOGLE地圖上某地的鳥瞰圖,通過圖像軟件處理圖像并大概標注地圖的信息.
(2)提取地圖上的經(jīng)緯度坐標,提取4個頂角的坐標和幾個標志建筑的坐標.
(3)對坐標進行換算,并轉化為GPS接收機接收到數(shù)據(jù)的格式.
(4)由于提取坐標時存在人為誤差和GOOGLE地圖上的定位誤差,通過實時的定位實驗,調整校正從GOOGLE地圖上提取的坐標,以減小誤差.
GPS接收機將接收到的信息通過串口送入計算機,經(jīng)過VB的程序處理,將GPS信息中的經(jīng)緯度、速度、海拔、時間提取出來并顯示、存儲.然后,將經(jīng)緯度信息與簡易電子地圖相匹配實現(xiàn)定位功能.
介紹一種利用VB程序設計和實現(xiàn)PC機與GPS接收機的通訊程序,以及實現(xiàn)GPS數(shù)據(jù)幀信息提取與分離.利用數(shù)據(jù)庫技術將接收到的GPS數(shù)據(jù)進行存儲,并且利用簡單的電子地圖設計實現(xiàn)基本定位功能.
[1] 張巨,陳犖,劉雨.在VB5中運用多線程實現(xiàn)微機與GPS接收機間的通信[J].微型機與應用,1999(12):9-10.
[2] 高春艷,劉彬彬.Visual Basic控件參考大全[M].北京:人民郵電出版社,2006.
[3] 王建宏.用VB實現(xiàn)GPS信息處理[J].微型電腦應用,2007,23(1):43-45.
[4] 蔡榆榕.VB通訊控件在機房管理中的應用[J].華僑大學學報:自然科學版,2004,25(3):334-336.
[5] 李擁軍.GPS定位系統(tǒng)中數(shù)據(jù)讀取和坐標的轉換[J].計算機與通信,2005,14(4):43-45.
Design and Implementation of Communications Programs of PC Computer with GPS Receiver
SHEN Zhen-h(huán)an,HUANG Hua-can
(College of Information Science and Engineering,Huaqiao University,Quanzhou 362021,China)
This paper designs a system to achieve the global position system by using global positioning system(GPS)module link serial port of the computers which receive the positioning information from the GPS module,and then deal with this information by using Visual Basic serial communication program,moreover,design an electronic map combine with the database technique.The information used in the system is gathered by a GPS receiver,and the information is dealt with by the program,then by use of electronic maps and database to achieve the function of positioning and searching.The system basically realizes the function to display latitude and longitude,speed,altitude,time,and GPS historical data query capabilities.
global position system;electronic map;database;serial interconnection
P 228.4
A
(責任編輯:錢筠 英文審校:吳逢鐵)
1000-5013(2011)01-0118-03
2009-09-23
黃華燦(1948-),男,教授,主要從事傳輸電子系統(tǒng)與專用集成電路設計的研究.E-mail:hchuangqz@hqu.edu.cn.
福建省科技計劃項目(2006T0006)