新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > GPS導航數據抽取的設計與研究

        GPS導航數據抽取的設計與研究

        作者: 時間:2012-02-08 來源:網絡 收藏

        摘 要: 為解決盲用定位模塊在嵌入式平臺下實現的問題,根據串口通信同步方式實現Windows CE 5.0操作系統下的提取,并對獲得的提出一種格式轉換的方法。以PXA270嵌入式系統平臺實現系統原型,在有限硬件條件下驗證了系統的功能及可行性。實驗結果表明,該系統運行穩定,實驗可靠有效,可以有效結合電子地圖數據提取出周邊的位置信息。

        本文引用地址:http://www.104case.com/article/149753.htm

        Windows CE作業系統是Windows家族中最新的成員,專門給掌上型電腦(HPCs)所使用的電腦環境。這樣的作業系統可使完整的可攜式技術與現有的Windows桌面技術整合工作。 Windows CE 被成針對小型設備(它是典型的擁有有限內存的無磁盤系統)的通用操作系統,

        Windows CE 可以通過一層位于內核和硬件之間代碼來用設定硬件平臺,這即是眾所周知的硬件抽象層(HAL)(在以前解釋時,這被稱為 OEMC (原始設備制造)適應層,即 OAL; 內核壓縮層,即 KAL。 以免與微軟的 Windows NT 操作系統 HAL 混淆) 。

        Windows CE 是一個開放的、可裁剪的、32位實時嵌入式窗口操作系統,具有可靠性好、實時性高、內核體積小的特點,廣泛應用于各種智能式設備的開發。系統通過微軟提供的Platform Builder定制需要的Windows CE5.0系統,運行在硬件平臺上。硬件平臺采用博創科技PXA270實驗箱,該實驗箱嵌入式處理器是基于ARMV5E的Xscale核心PXA270,并支持串口通信。

        芯片采用天寶iQ 46240,將接收到的數據通過串口發送給處理器。串口是計算機系統與外部串行設備之間的數據傳輸通道,是嵌入式通信最可靠、最通用的通信方式。程序員利用Windows API函數可以編寫出高效、可移植性的應用程序。Windows CE不支持Windows下常用的串行通信異步I/O方式(Overlapped,非阻塞),因此在嵌入式環境下采用了同步I/O方式的通信程序設計方法。

        實驗設計根據數據有效性確認的標準,對提取的數據進行處理,把緩存中接收到的GPS數據格式轉化為電子地圖上常用的浮點型格式。此設計已應用于智能閱讀器盲用定位模塊中。

        1 串口通信同步I/O方式的程序設計

        串口通信是串行通信的一種,串行通信的模式一般分為上位機和下位機通信。上位機可以讀取下位機的狀態數據,也可以設置下位機的狀態。一般串行通信協議可分為兩類,即讀和寫。

        串口通信的概念非常簡單,串口按位(bit)發送和接收字節。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單并且能夠實現遠距離通信。比如IEEE488定義并行通行狀態時,規定設備線總長不得超過20米,并且任意兩個設備間的長度不得超過2米;而對于串口而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發送數據同時在另一根線上接收數據。其他線用于握手,但是不是必須的。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。

        在實驗設計中,GPS接收裝置作為下位機只負責提供固定格式的數據,實驗箱作為上位機不必發送指令,只負責定時讀取GPS接收裝置發送的數據。即可以簡化通信協議,提高工作效率。

        1.1 設計開發環境

        在Windows NT/ME環境下安裝eVC4.0編程環境,設置順序如下:

        (1)安裝同步軟件Microsoft AcTIveSync 4.0;

        (2)安裝eVC4.0;

        (3)利用PB(Platform Builder5.0)定制Wince系統對應的SDK并安裝;

        (4)利用PB將定制的wince系統下載到實驗箱上,并與PC機同步[2]。

        1.2 同步I/O方式讀取的設計方法

        為完成串口通信同步I/O方式程序設計,分為三個部分,每個部分有一個函數完成其對應的功能[3]。函數原型為:

          ONOpenCom(); //打開并設置串口

          ReadThreadFunc(LPVOID lparam); //串口接收線程

          OnSeriesRead(CWnd *pWnd, BYTE *buf, int bufLen);

          //串口接收數據成功回調函數

        其主要功能是能夠捕獲到按一定衛星截止角所選擇的待測衛星,并跟蹤這些衛星的運行。當接收機捕獲到跟蹤的衛星信號后,就可測量出接收天線至衛星的偽距離和距離的變化率,解調出衛星軌道參數等數據。根據這些數據,接收機中的微處理計算機就可按定位解算方法進行定位計算,計算出用戶所在地理位置的經緯度、高度、速度、時間等信息。接收機硬件和機內軟件以及GPS 數據的后處理軟件包構成完整的GPS 用戶設備。

        xi,yi,zi(i=1,2,3,4)分別代表衛星1、2、3、4在t時刻的空間直角坐標,可由衛星導航電文求得,Vti代表衛星鐘差,Vt0為接收機的鐘差。

        由以上4個方程式可計算出待測點的坐標x、y、z和接收機的鐘差Vt0。因此導航數據能夠有效計算必須保證接收到4個衛星的星歷。對固定格式的導航電碼中提取衛星符號進行確認,通常,3顆衛星可以在二維平面上得到經度緯度坐標,為精確起見,4顆衛星可以保證獲得三維空間坐標。

        2.2 有效數據提取和數據格式轉化

        有效數據的提取和數據格式轉化都是在回調函數中進行的[5]。eVC支持CString類型格式,由于定位信息格式固定,本文先利用mbstowcs函數將緩存中的字符型數據轉換為寬字符型,然后強制轉化為字符串類型。

          WCHAR wszbuf[512];

          mbstowcs(wszbuf,(char*)buf,strlen((char*)buf));字符串類型進行處理,然后利用Find函數,搜索$GPGGA,

          strRecv.Find(_T($GPGGA),1);

          state=strRecv.Mid(pos+37,1);

          得到GPS 質量指示指標

          strSatelliteNum=strRecv.Mid(pos+39,1) ;

          int iSatelliteNum=atoi((LPSTR)(LPCTSTR)strSatelliteNum);

        當iSatelliteNum>3 state = =‘1’時說明接收到的是有效數據,可對strRecv中的數據進行提取,并賦給經緯度和時間變量。

          strLatitude =strRecv.Mid(pos+16,8);

          strLongitude=strRecv. Mid(pos+27,9);

          double Longitude_new = (atof(strLongitude))/100;

        這樣將經度緯度信息提取到GPS結構數組中,后續的處理和高層決策可根據該結構中存儲的數據作出相應的處理。

        3 程序運行結果分析

        結果分析,可知通過串口在不同時段接收的數據是比較穩定的,能夠以此為基礎提取到有效的數據和定位信息,本系統結合超圖格式(pwr,pmw)的北京市公交站點地圖數據,在編寫程序時調用超圖接口函數打開電子地圖數據,將串口接收到的數據讀入,得到附近的公交站點并以文本方式輸出到界面。

        本文結合相關程序代碼陳述了基于eVC環境下串口通信程序的設計,對GPS全球定位系統定位信息的接收和數據提取進行了詳細的分析和討論。主要解決了EVC編程環境下實現串口通信功能、對GPS定位信息的提取和處理的問題。實驗對wince5.0自定義平臺下開發GPS接收裝置給出了代碼樣例供參考,并已應用于智能閱讀器項目中盲用定位模塊。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 营山县| 隆子县| 米脂县| 湟源县| 海南省| 南宁市| 湄潭县| 双柏县| 克拉玛依市| 夏邑县| 桐城市| 京山县| 东源县| 县级市| 江西省| 五指山市| 饶平县| 汾阳市| 临武县| 故城县| 忻城县| 肇源县| 洪湖市| 邯郸市| 济源市| 密云县| 龙海市| 合作市| 黄浦区| 西畴县| 建水县| 铜山县| 天台县| 黑龙江省| 城口县| 华蓥市| 商城县| 泗水县| 尚志市| 托克逊县| 阳城县|