GPS導航數據抽取的設計與研究
摘 要: 為解決盲用定位模塊在嵌入式平臺下實(shí)現的問(wèn)題,根據串口通信同步方式實(shí)現Windows CE 5.0操作系統下GPS導航數據的提取,并對獲得的數據提出一種格式轉換的方法。以PXA270嵌入式系統平臺實(shí)現系統原型,在有限硬件條件下驗證了系統的功能及可行性。實(shí)驗結果表明,該系統運行穩定,實(shí)驗數據可靠有效,可以有效結合電子地圖數據提取出周邊的位置信息。
本文引用地址:http://dyxdggzs.com/article/149753.htmWindows CE作業(yè)系統是Windows家族中最新的成員,專(zhuān)門(mén)設計給掌上型電腦(HPCs)所使用的電腦環(huán)境。這樣的作業(yè)系統可使完整的可攜式技術(shù)與現有的Windows桌面技術(shù)整合工作。 Windows CE 被設計成針對小型設備(它是典型的擁有有限內存的無(wú)磁盤(pán)系統)的通用操作系統,
Windows CE 可以通過(guò)設計一層位于內核和硬件之間代碼來(lái)用設定硬件平臺,這即是眾所周知的硬件抽象層(HAL)(在以前解釋時(shí),這被稱(chēng)為 OEMC (原始設備制造)適應層,即 OAL; 內核壓縮層,即 KAL。 以免與微軟的 Windows NT 操作系統 HAL 混淆) 。
Windows CE 是一個(gè)開(kāi)放的、可裁剪的、32位實(shí)時(shí)嵌入式窗口操作系統,具有可靠性好、實(shí)時(shí)性高、內核體積小的特點(diǎn),廣泛應用于各種智能式設備的開(kāi)發(fā)。系統通過(guò)微軟提供的Platform Builder定制需要的Windows CE5.0系統,運行在硬件平臺上。硬件平臺采用博創(chuàng )科技PXA270實(shí)驗箱,該實(shí)驗箱嵌入式處理器是基于A(yíng)RMV5E的Xscale核心PXA270,并支持串口通信。
GPS導航芯片采用天寶iQ 46240,將接收到的數據通過(guò)串口發(fā)送給處理器。串口是計算機系統與外部串行設備之間的數據傳輸通道,是嵌入式通信最可靠、最通用的通信方式。程序員利用Windows API函數可以編寫(xiě)出高效、可移植性的應用程序。Windows CE不支持Windows下常用的串行通信異步I/O方式(Overlapped,非阻塞),因此在嵌入式環(huán)境下采用了同步I/O方式的通信程序設計方法。
實(shí)驗設計根據GPS導航數據有效性確認的標準,對提取的數據進(jìn)行處理,把緩存中接收到的GPS數據格式轉化為電子地圖上常用的浮點(diǎn)型格式。此設計已應用于智能閱讀器盲用定位模塊中。
1 串口通信同步I/O方式的程序設計
串口通信是串行通信的一種,串行通信的模式一般分為上位機和下位機通信。上位機可以讀取下位機的狀態(tài)數據,也可以設置下位機的狀態(tài)。一般串行通信協(xié)議可分為兩類(lèi),即讀和寫(xiě)。
串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線(xiàn)發(fā)送數據的同時(shí)用另一根線(xiàn)接收數據。它很簡(jiǎn)單并且能夠實(shí)現遠距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規定設備線(xiàn)總長(cháng)不得超過(guò)20米,并且任意兩個(gè)設備間的長(cháng)度不得超過(guò)2米;而對于串口而言,長(cháng)度可達1200米。典型地,串口用于A(yíng)SCII碼字符的傳輸。通信使用3根線(xiàn)完成:(1)地線(xiàn),(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線(xiàn)上發(fā)送數據同時(shí)在另一根線(xiàn)上接收數據。其他線(xiàn)用于握手,但是不是必須的。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。
在實(shí)驗設計中,GPS接收裝置作為下位機只負責提供固定格式的數據,實(shí)驗箱作為上位機不必發(fā)送指令,只負責定時(shí)讀取GPS接收裝置發(fā)送的數據。即可以簡(jiǎn)化通信協(xié)議,提高工作效率。
1.1 設計開(kāi)發(fā)環(huán)境
在Windows NT/ME環(huán)境下安裝eVC4.0編程環(huán)境,設置順序如下:
(1)安裝同步軟件Microsoft AcTIveSync 4.0;
(2)安裝eVC4.0;
(3)利用PB(Platform Builder5.0)定制Wince系統對應的SDK并安裝;
(4)利用PB將定制的wince系統下載到實(shí)驗箱上,并與PC機同步[2]。
1.2 同步I/O方式讀取的設計方法
為完成串口通信同步I/O方式程序設計,分為三個(gè)部分,每個(gè)部分有一個(gè)函數完成其對應的功能[3]。函數原型為:
ONOpenCom(); //打開(kāi)并設置串口
ReadThreadFunc(LPVOID lparam); //串口接收線(xiàn)程
OnSeriesRead(CWnd *pWnd, BYTE *buf, int bufLen);
//串口接收數據成功回調函數
其主要功能是能夠捕獲到按一定衛星截止角所選擇的待測衛星,并跟蹤這些衛星的運行。當接收機捕獲到跟蹤的衛星信號后,就可測量出接收天線(xiàn)至衛星的偽距離和距離的變化率,解調出衛星軌道參數等數據。根據這些數據,接收機中的微處理計算機就可按定位解算方法進(jìn)行定位計算,計算出用戶(hù)所在地理位置的經(jīng)緯度、高度、速度、時(shí)間等信息。接收機硬件和機內軟件以及GPS 數據的后處理軟件包構成完整的GPS 用戶(hù)設備。
xi,yi,zi(i=1,2,3,4)分別代表衛星1、2、3、4在t時(shí)刻的空間直角坐標,可由衛星導航電文求得,Vti代表衛星鐘差,Vt0為接收機的鐘差。
由以上4個(gè)方程式可計算出待測點(diǎn)的坐標x、y、z和接收機的鐘差Vt0。因此導航數據能夠有效計算必須保證接收到4個(gè)衛星的星歷。對固定格式的導航電碼中提取衛星符號進(jìn)行確認,通常,3顆衛星可以在二維平面上得到經(jīng)度緯度坐標,為精確起見(jiàn),4顆衛星可以保證獲得三維空間坐標。
2.2 有效數據提取和數據格式轉化
有效數據的提取和數據格式轉化都是在回調函數中進(jìn)行的[5]。eVC支持CString類(lèi)型格式,由于定位信息格式固定,本文先利用mbstowcs函數將緩存中的字符型數據轉換為寬字符型,然后強制轉化為字符串類(lèi)型。
WCHAR wszbuf[512];
mbstowcs(wszbuf,(char*)buf,strlen((char*)buf));字符串類(lèi)型進(jìn)行處理,然后利用Find函數,搜索$GPGGA,
strRecv.Find(_T($GPGGA),1);
state=strRecv.Mid(pos+37,1);
得到GPS 質(zhì)量指示指標
strSatelliteNum=strRecv.Mid(pos+39,1) ;
int iSatelliteNum=atoi((LPSTR)(LPCTSTR)strSatelliteNum);
當iSatelliteNum>3 state = =‘1’時(shí)說(shuō)明接收到的是有效數據,可對strRecv中的數據進(jìn)行提取,并賦給經(jīng)緯度和時(shí)間變量。
strLatitude =strRecv.Mid(pos+16,8);
strLongitude=strRecv. Mid(pos+27,9);
double Longitude_new = (atof(strLongitude))/100;
這樣將經(jīng)度緯度信息提取到GPS結構數組中,后續的處理和高層決策可根據該結構中存儲的數據作出相應的處理。
3 程序運行結果分析
結果分析,可知通過(guò)串口在不同時(shí)段接收的數據是比較穩定的,能夠以此為基礎提取到有效的數據和定位信息,本系統結合超圖格式(pwr,pmw)的北京市公交站點(diǎn)地圖數據,在編寫(xiě)程序時(shí)調用超圖接口函數打開(kāi)電子地圖數據,將串口接收到的數據讀入,得到附近的公交站點(diǎn)并以文本方式輸出到界面。
本文結合相關(guān)程序代碼陳述了基于eVC環(huán)境下串口通信程序的設計,對GPS全球定位系統定位信息的接收和數據提取進(jìn)行了詳細的分析和討論。主要解決了EVC編程環(huán)境下實(shí)現串口通信功能、對GPS定位信息的提取和處理的問(wèn)題。實(shí)驗對wince5.0自定義平臺下開(kāi)發(fā)GPS接收裝置給出了代碼樣例供參考,并已應用于智能閱讀器項目中盲用定位模塊。
評論