Windows Mobile 6 SDK 中的 GPS 工具
自從 Windows Mobile 5.0 引進了 GPS Intermediate Driver(GPS 中間驅(qū)動程序,以下簡稱 GPSID),開發(fā)基于 GPS(Global Positioning System,全球定位系統(tǒng))的 Windows Mobile 應(yīng)用程序變得簡單多了。原因是它在開發(fā)人員編寫的應(yīng)用程序和 GPS 設(shè)備之間加入了一個中間層,使開發(fā)人員不需要通過串口直接訪問 GPS 設(shè)備,而是訪問 GPSID 提供的 API 函數(shù),GPSID 再去訪問 GPS 設(shè)備。這樣一來,編寫出來的 GPS 應(yīng)用程序具有設(shè)備無關(guān)性。另外,GPSID 還有下面兩個好處:
1. 多個應(yīng)用程序可以同時訪問同一個 GPS 設(shè)備,因為你訪問的是 GPSID
2. 不需要去解析 NMEA 命令,GPSID 幫你解析好了
關(guān)于 GPSID 的詳細介紹請參閱 GPS Intermediate Driver Reference,還可以觀看張汝頗的 Windows Mobile 輕松接軌GPS Webcast,在本文不會展開討論。
這次 Windows Mobile 6 SDK 提供的 Fake GPS 和 GPS Settings 這兩個針對 GPSID 開發(fā)和使用的輔助工具,基于 .NET Compact Framework 1.0 編寫,所以適用于 Windows Mobile 5.0。在 C:\Program Files\Windows Mobile 6 SDK\Tools\GPS 目錄下可以找到這兩個小工具。
Fake GPS
如果你想開發(fā)一個運行在 Windows Mobile 系統(tǒng)的 GPS 應(yīng)用程序,但是找不到 GPS 設(shè)備用來調(diào)試,或者你在室內(nèi)調(diào)試程序,GPS 設(shè)備接收不到衛(wèi)星信號,那 Fake GPS 正是你急需的工具了。
GPSID 的所有設(shè)置信息都保存在注冊表中,可以通過修改注冊表來更改 GPSID 的設(shè)置。其中有個一個設(shè)置,可以讓 GPSID 從一個包含 NMEA 命令的 .txt 文件讀取 GPS 數(shù)據(jù),而不需要從 GPS 設(shè)備讀取數(shù)據(jù)。這個在張汝頗的 Windows Mobile 輕松接軌GPS 中也有介紹。Fake GPS 的工作原理就是修改注冊表的 GPSID 設(shè)備,讓 GPSID 從一個文本文件讀取 GPS 數(shù)據(jù)。而對于我們開發(fā)的應(yīng)用程序來說,跟訪問真實的設(shè)備并沒有兩樣。
在使用 Fake GPS 之前需要將它安裝到你 Windows Mobile 設(shè)備上或者仿真器上,安裝文件是 FakeGPS.CAB。這里我把 Fake GPS 安裝到 Windows Mobile 6 Standard 的仿真器里。安裝成功后在開始菜單中找到它并運行。
Fake GPS 的設(shè)置默認沒有生效,我們可以在***個輸入框把它的狀態(tài)改為 Enabled,現(xiàn)在可以在第二個輸入框中選擇從哪個文件讀取 GPS 數(shù)據(jù)。Fake GPS 默認帶了兩個測試文件,fakegpsdata.txt 在打開后會讓 GPSID 馬上接收到位置信息,而 dixies.txt 需要等待一段時間才能接收到位置信息。
如果你想使用自己的測試數(shù)據(jù),可以將編寫好的 .txt 文件復(fù)制到 \Program Files\FakeGPS\GPSFiles 目錄下,在重新運行 Fake GPS 就可以在 NMEA File 列表中看到了。
下面有一段 NMEA 數(shù)據(jù)可供測試:
- GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21
- GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
- GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77
- GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42
- GPGSV,3,3,9,134,0,0,0*46
- GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*21
- GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75
- GPGLL,4738.0172,N,12211.1874,W,191935.767,A*21
- GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
- GPRMC,191935.767,A,4738.0172,N,12211.1874,W,0.081611,15.81,291004,,*2A
這里我選擇了 fakegpsdata.txt 作為測試數(shù)據(jù)。點擊 done 按鈕保存設(shè)置并關(guān)閉 Fake GPS。然后運行我前段時間編寫的一個坐標(biāo)采集工具 Smart GPS Tracker,它是基于 Windows Mobile 5.0 GPSID 編寫的,效果如下:
到此為止,我沒有用到一臺真實的設(shè)
備。Fake GPS 適用于 Pocket PC 和 Smartphone 兩種操作系統(tǒng),它會自適應(yīng)。
GPS Settings
在 Windows Mobile 5.0 和 Windows Mobile 6 的 Pocket PC 版操作系統(tǒng)中自帶了一個 GPSID 的配置程序,在 Windows Mobile 6 Professional 中可以通過選擇“Start-->Settings-->System-->External GPS”打開。
而 Smartphone 版的操作系統(tǒng)中并沒有自帶類似的 GPSID 配置程序,這為開發(fā) Smartphone 上的 GPS 應(yīng)用程序帶了一些不便。我是自己寫了一個,其實也不難,就是讀/寫幾個注冊表的鍵值。
Windows Mobile 6 SDK 中提供了一個叫 GPS Settings 的工具,用于在 Smartphone 的操作系統(tǒng)配置 GPSID,功能跟 Pocket PC 上的一樣。在 C:\Program Files\Windows Mobile 6 SDK\Tools\GPS 目錄下找到 Settings.exe,并將它復(fù)制到 Smartphone 上運行。
關(guān)于 GPSID 如何設(shè)置,這里不展開了,如果你感興趣可以看我上面推薦的學(xué)習(xí)資料。
小總結(jié)
GPS Intermediate Driver 為我們開發(fā)GPS 應(yīng)用程序帶來了很多好處,而 Windows Mobile 6 SDK 中提供的 Fake GPS 和 GPS Settings 這兩個小工具,彌補了 Windows Mobile 5.0 SDK 中的空缺,使得開發(fā)基于 GPSID 的應(yīng)用程序更加方便。如果你對這兩個工具的工作原理感興趣,可以自己用 Reflector 打開它們的程序集,好好研究一番,不明白的地方可以查 SDK 的幫助。另外,Windows Mobile 6 SDK 自帶了一個 GPSID 示例的完整項目代碼,對于理解 GPSID 的工作原理很有幫助,并且它的代碼具有很高的重用價值,在 D:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS 目錄下可以找到這個示例。
【編輯推薦】
Windows Mobile 6.5 Widgets開發(fā)初體驗
Windows Mobile 6.5開發(fā)環(huán)境搭建以及變化