羅海英,李 強,劉旭東
(1.北京跟蹤與通信技術研究所,北京 100094;2.北京理工大學,北京 100081)
基于 VC++的 GPS狀態(tài)監(jiān)控與數(shù)據(jù)采集軟件的設計與實現(xiàn)
羅海英1,2,李 強1,劉旭東1
(1.北京跟蹤與通信技術研究所,北京 100094;2.北京理工大學,北京 100081)
利用VC++和NovAtel公司的系列精密測量型接收機,開發(fā)了一套 GPS狀態(tài)監(jiān)控與數(shù)據(jù)采集軟件。該軟件能夠針對測量型GPS接收機實現(xiàn)自動握手、命令發(fā)送、數(shù)據(jù)解調(diào)、狀態(tài)監(jiān)控窗口顯示、星座窗口顯示和通道跟蹤狀態(tài)窗口顯示等功能;能夠進行原始測量數(shù)據(jù)的采集并且具有事后回放功能,兼容了NovAtel公司目前所有型號的系列產(chǎn)品,界面友好,使用方便,多次參加工程實踐,具有很好的應用推廣價值。
VC++;GPS;狀態(tài)監(jiān)控;數(shù)據(jù)采集
GPS是現(xiàn)代高新技術實現(xiàn)軍民兩用的一個成功典范,已逐步演變?yōu)橐环N世界性的高新技術產(chǎn)業(yè),受到人們的普遍關注。雖然歐洲的伽利略、中國的北斗二代等系統(tǒng)已經(jīng)逐步開始建設,但是不可否認,GPS仍然是目前世界上應用最為廣泛的衛(wèi)星導航系統(tǒng),它具有全球連續(xù)覆蓋、精度高、定位實時性好、觀測時間短、全天候作業(yè)等優(yōu)點[1]。而 GPS接收機通過接收衛(wèi)星信號解算出目標位置、速度和其他信息,以實現(xiàn)定位導航功能,顯然如何獲取接收機的數(shù)據(jù)顯得極其重要[2]。
GPS接收機輸出的數(shù)據(jù)格式分為兩類:①十進制的ASCⅡ碼,GPS的統(tǒng)一標準格式NMEA-0183輸出就采用這種格式,目前大量的應用研究均為基于NMEA-0183格式進行的[3];②二進制碼,它具有運算方便的特點,考慮到精密測量、GPS事后數(shù)據(jù)處理等數(shù)據(jù)量較大的特點,本軟件采集并解調(diào) GPS接收機輸出的二進制數(shù)據(jù)。
通常情況下,用戶都是用計算機和 GPS接收機進行通信,將 GPS定位信息導入計算機后再處理。Visual C++作為可視化開發(fā)工具,以其卓越的功能為串口通信編程提供了強大的技術支持[4]。本文介紹的 GPS狀態(tài)監(jiān)控與數(shù)據(jù)采集軟件采用異步串行傳輸方式,通過RS-232串口采集二進制的 GPS數(shù)據(jù)。
GPS接收機與計算機之間采用 RS-232異步串行傳輸方式進行數(shù)據(jù)交換。在進行串口通信時,必須先打開串口并進行初始化后才能開始數(shù)據(jù)的發(fā)送和接收,通信完成后應及時關閉串口[5]。從串口讀取數(shù)據(jù)的方法有很多種,在此直接使用W in32 API函數(shù)對其進行編程處理。GPS接收機的串口參數(shù)配置為:數(shù)據(jù)傳輸率 115 200 bit/s,數(shù)據(jù)位 8 bit/s,啟動位 1 bit,停止位 1 bit,無奇偶校驗??紤]到精度測量的需求,采樣率大于 10 Hz。在對 GPS進行提取信息之前必須明確 GPS的數(shù)據(jù)結(jié)構(gòu),NovAtel系列接收機大致可以分為兩類:①老一代的OE MⅡ和OE MⅢ系列;②新一代的OE MⅣ和OE MⅤ系列。兩個系列產(chǎn)品在數(shù)據(jù)格式上存在較大的差異,因此在程序?qū)崿F(xiàn)上需要對其定義不同的數(shù)據(jù)結(jié)構(gòu)。OE MⅡ和OE MⅢ系列接收機的數(shù)據(jù)結(jié)構(gòu)參如圖1所示。OE MⅣ和OE MⅤ系列接收機的數(shù)據(jù)結(jié)構(gòu)參如圖2所示。
圖1 OEMⅡ和OEMⅢ系列接收機的數(shù)據(jù)結(jié)構(gòu)示意圖
圖2 OEMⅣ和OEMⅤ系列接收機的數(shù)據(jù)結(jié)構(gòu)示意圖面
該軟件系統(tǒng)結(jié)構(gòu)主要由主控程序、通道跟蹤狀態(tài)顯示模塊、星座圖顯示模塊、狀態(tài)監(jiān)控顯示模塊等組成。各部分以獨立線程方式實現(xiàn),彼此之間的數(shù)據(jù)通信和共享通過主控程序開辟的數(shù)據(jù)共享區(qū)實現(xiàn)。系統(tǒng)結(jié)構(gòu)示意圖如圖 3所示。
圖3 系統(tǒng)結(jié)構(gòu)示意圖
主控程序主要完成六項功能:①用預定的波特率自動完成對 GPS接收機的搜索。②數(shù)據(jù)存放和處理。主要用于存入設置或者解調(diào)得到的各種元數(shù)據(jù)和某個具體測量歷元的瞬時測量數(shù)據(jù),進行合理性檢驗,并進行必要的計算及存放解算結(jié)果。具體包括存放解調(diào)得到的 GPS接收機通道跟蹤狀態(tài)數(shù)據(jù),與 GPS衛(wèi)星相關的具體某顆衛(wèi)星的偽距、多普勒、載波相位等數(shù)據(jù)并進行合理性檢驗,衛(wèi)星的方位、高度、星歷并進行衛(wèi)星視位置和星歷計算,設置、計算和存放測站相關數(shù)據(jù)、觀測數(shù)據(jù)的記錄等。③數(shù)據(jù)解調(diào)功能。解調(diào)模塊主要完成端口讀取數(shù)據(jù)的解調(diào)工作,數(shù)據(jù)解調(diào)模塊以“注冊”方式存放多種格式數(shù)據(jù)的解調(diào)模式,由用戶根據(jù)連接的 GPS機載進行選取。其具體功能包括解調(diào)模塊注冊、解調(diào)端口讀取的數(shù)據(jù)、對解調(diào)的數(shù)據(jù)進行 CRC校驗。④端口控制功能。主要包括端口打開、關閉,與GPS接收機的自動握手,讀取端口接收的 GPS數(shù)據(jù),通過端口向 GPS寫控制命令,以虛擬 GPS數(shù)據(jù)流方式實現(xiàn)數(shù)據(jù)回放,其中包括數(shù)據(jù)文件打開、關閉、讀取。⑤參數(shù)設置功能。參數(shù)設置包括初始化參數(shù)設置和命令設置,采用讀取配置文件方式實現(xiàn)。其中初始化參數(shù)設置,包括接收機參數(shù)設置、程序運行參數(shù)、計算機串口設置、文件存儲路徑聲明等參數(shù);命令設置參數(shù)包括了要對接收機進行設置的常見命令。⑥時間及坐標轉(zhuǎn)換功能。主要完成由 GPS時間與北京時間,地心坐標與大地經(jīng)緯度等轉(zhuǎn)換。
星座圖顯示功能主要是以天空星座圖的方式繪制當前可見可用的 GPS衛(wèi)星星座圖,圖形界面如圖 4所示;通道跟蹤狀態(tài)功能為繪制接收機各通道當前跟蹤狀態(tài),包括信噪比、跟蹤狀態(tài)、鎖定時間等信息,圖形界面如圖 5所示;狀態(tài)監(jiān)控信息顯示功能主要是顯示當前的相關參數(shù)和狀態(tài),包括接收機的聯(lián)機參數(shù)、當前采樣時間,以北京時間進行顯示當前的定位狀態(tài)、當前解算狀態(tài)、當前的定位結(jié)果和定位解算殘差、當前解調(diào)得到的幀歸類統(tǒng)計信息,圖形界面如圖 6所示。
圖4 可視衛(wèi)星星座圖
圖5 通道跟蹤狀態(tài)圖
圖6 定位信息顯示圖
1.串口通信模塊的功能實現(xiàn)
串口通信直接使用W in32 API函數(shù)對其進行處理。在W indows下所有的端口均被視為“文件”,不允許直接對硬件端口進行控制操作,因此在串口通信之前需要通過打開文件來打開串口[6],在此定義一個函數(shù)來實現(xiàn)串口的初始化,串口初始化完成后采用輪詢的方式搜索接收機,并向接收機發(fā)送信息請求接收機輸出信息,成功連接之后開始接收信息。
2.數(shù)據(jù)解調(diào)
由串口讀取的數(shù)據(jù),首先需要進行拼幀解調(diào),對解調(diào)的數(shù)據(jù)進行合理性檢驗,之后進行存儲、提供給狀態(tài)監(jiān)控顯示、星座圖、通道狀態(tài)圖等模塊使用。NovAtel不同型號的 GPS接收機數(shù)據(jù)格式彼此不相同,每種格式都需要進行解調(diào),這便增加了程序編制的難度。
3.數(shù)據(jù)記錄
為保證數(shù)據(jù)記錄的正確性與可靠性,軟件采用了“數(shù)據(jù)緩存雙文件記盤”技術,其輸出文件的副本采用了固定文件名“GPSTempFile.dat”,發(fā)生異常情況重啟計算機后在約定的文件夾中可以看到 GPSTempFile.dat和另一個實時記盤文件。
本軟件已經(jīng)成功應用于多次試驗中。與其他商用的數(shù)據(jù)記錄與采集軟件相比,它具有以下幾大優(yōu)點:
1.操作簡單,界面友好
在重要測試任務中,操作手可能不具備熟練操作軟件的專業(yè)素質(zhì),而目前大量的商用軟件均存在操作煩瑣、使用不便的問題,本軟件界面友好,操作簡單,只需要簡單的幾步操作,就可實現(xiàn)軟件的正常運行。
2.簡單易學,避免錯誤
軟件采用配置文件的方式進行初始化和接收機命令設置,這樣避免了在關鍵任務中輸入錯誤的命令,并且一旦在事后數(shù)據(jù)處理中出現(xiàn)問題,首先查找接收機的命令設置是否正確,方便快速查找問題,提高了工作的效率。
3.功能齊全,簡單實用
軟件在需求階段分析的比較透徹,既克服了商用軟件的缺陷,又具備了比較齊全的功能,很好地實現(xiàn)了數(shù)據(jù)的監(jiān)控與采集。
介紹了一種使用 VC++實現(xiàn) GPS數(shù)據(jù)監(jiān)控與采集的自研軟件,通過介紹的軟件可以將 GPS原始測量信息、定位測速信息完整接收,通過對定位參數(shù)的提取可將其應用于其他 GPS應用領域。本文程序在W indows XP下由MicrosoftVisual.NET 2003編譯通過,具有簡單、實用的特點。它可以實現(xiàn) GPS接收機和計算機之間的數(shù)據(jù)通信,并將定位信息、星座圖、通道跟蹤狀態(tài)等信息直觀地在相應窗口顯示出來,具有很好的應用推廣價值。
[1] 周忠謨,易杰軍,等.GPS衛(wèi)星測量原理與應用[M].北京:測繪出版社,1997:2-4.
[2] 高振松,過靜王君,李冰皓,等.W indows CE下實現(xiàn)掌上機和 GPSOE M板的通信 [J].測繪通報,2001(5):35-36.
[3] 顧必良,王黎明,韓焱.基于 VC++的 GPS數(shù)據(jù)采集與處理[J].微計算機信息,2008,24(5-1):203-204.
[4] 王曉東.基于VC++的 GPS數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)[J].湖北汽車工業(yè)學院學報,2006,20(2):46-49.
[5] 郞銳,羅發(fā)根.Visual C++網(wǎng)絡通信程序開發(fā)指南[M].北京:機械工業(yè)出版社,2004.
[6] 馬云.Visual C++.NET寶典[M].北京:電子工業(yè)出版社,2003.
Design and Implementation of GPS StateM on itoring and Data Acquisition Software Based on VC++
LUO Haiying,L IQiang,L IU Xudong
0494-0911(2010)12-0027-03
P228.4
B
2009-12-25
羅海英(1979—),女,遼寧蓋州人,工程師,研究方向為 GPS應用。