Windows Mobile 6 SDK 中的 GPS 工具
自從 Windows Mobile 5.0 引進(jìn)了 GPS Intermediate Driver(GPS 中間驅(qū)動(dòng)程序,以下簡(jiǎn)稱(chēng) GPSID),開(kāi)發(fā)基于 GPS(Global Positioning System,全球定位系統(tǒng))的 Windows Mobile 應(yīng)用程序變得簡(jiǎn)單多了。原因是它在開(kāi)發(fā)人員編寫(xiě)的應(yīng)用程序和 GPS 設(shè)備之間加入了一個(gè)中間層,使開(kāi)發(fā)人員不需要通過(guò)串口直接訪問(wèn) GPS 設(shè)備,而是訪問(wèn) GPSID 提供的 API 函數(shù),GPSID 再去訪問(wèn) GPS 設(shè)備。這樣一來(lái),編寫(xiě)出來(lái)的 GPS 應(yīng)用程序具有設(shè)備無(wú)關(guān)性。另外,GPSID 還有下面兩個(gè)好處:
1. 多個(gè)應(yīng)用程序可以同時(shí)訪問(wèn)同一個(gè) GPS 設(shè)備,因?yàn)槟阍L問(wèn)的是 GPSID
2. 不需要去解析 NMEA 命令,GPSID 幫你解析好了
關(guān)于 GPSID 的詳細(xì)介紹請(qǐng)參閱 GPS Intermediate Driver Reference,還可以觀看張汝頗的 Windows Mobile 輕松接軌GPS Webcast,在本文不會(huì)展開(kāi)討論。
這次 Windows Mobile 6 SDK 提供的 Fake GPS 和 GPS Settings 這兩個(gè)針對(duì) GPSID 開(kāi)發(fā)和使用的輔助工具,基于 .NET Compact Framework 1.0 編寫(xiě),所以適用于 Windows Mobile 5.0。在 C:\Program Files\Windows Mobile 6 SDK\Tools\GPS 目錄下可以找到這兩個(gè)小工具。
Fake GPS
如果你想開(kāi)發(fā)一個(gè)運(yùn)行在 Windows Mobile 系統(tǒng)的 GPS 應(yīng)用程序,但是找不到 GPS 設(shè)備用來(lái)調(diào)試,或者你在室內(nèi)調(diào)試程序,GPS 設(shè)備接收不到衛(wèi)星信號(hào),那 Fake GPS 正是你急需的工具了。
GPSID 的所有設(shè)置信息都保存在注冊(cè)表中,可以通過(guò)修改注冊(cè)表來(lái)更改 GPSID 的設(shè)置。其中有個(gè)一個(gè)設(shè)置,可以讓 GPSID 從一個(gè)包含 NMEA 命令的 .txt 文件讀取 GPS 數(shù)據(jù),而不需要從 GPS 設(shè)備讀取數(shù)據(jù)。這個(gè)在張汝頗的 Windows Mobile 輕松接軌GPS 中也有介紹。Fake GPS 的工作原理就是修改注冊(cè)表的 GPSID 設(shè)備,讓 GPSID 從一個(gè)文本文件讀取 GPS 數(shù)據(jù)。而對(duì)于我們開(kāi)發(fā)的應(yīng)用程序來(lái)說(shuō),跟訪問(wèn)真實(shí)的設(shè)備并沒(méi)有兩樣。
在使用 Fake GPS 之前需要將它安裝到你 Windows Mobile 設(shè)備上或者仿真器上,安裝文件是 FakeGPS.CAB。這里我把 Fake GPS 安裝到 Windows Mobile 6 Standard 的仿真器里。安裝成功后在開(kāi)始菜單中找到它并運(yùn)行。
Fake GPS 的設(shè)置默認(rèn)沒(méi)有生效,我們可以在***個(gè)輸入框把它的狀態(tài)改為 Enabled,現(xiàn)在可以在第二個(gè)輸入框中選擇從哪個(gè)文件讀取 GPS 數(shù)據(jù)。Fake GPS 默認(rèn)帶了兩個(gè)測(cè)試文件,fakegpsdata.txt 在打開(kāi)后會(huì)讓 GPSID 馬上接收到位置信息,而 dixies.txt 需要等待一段時(shí)間才能接收到位置信息。
如果你想使用自己的測(cè)試數(shù)據(jù),可以將編寫(xiě)好的 .txt 文件復(fù)制到 \Program Files\FakeGPS\GPSFiles 目錄下,在重新運(yùn)行 Fake GPS 就可以在 NMEA File 列表中看到了。
下面有一段 NMEA 數(shù)據(jù)可供測(cè)試:
- 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 作為測(cè)試數(shù)據(jù)。點(diǎn)擊 done 按鈕保存設(shè)置并關(guān)閉 Fake GPS。然后運(yùn)行我前段時(shí)間編寫(xiě)的一個(gè)坐標(biāo)采集工具 Smart GPS Tracker,它是基于 Windows Mobile 5.0 GPSID 編寫(xiě)的,效果如下:
到此為止,我沒(méi)有用到一臺(tái)真實(shí)的設(shè)
備。Fake GPS 適用于 Pocket PC 和 Smartphone 兩種操作系統(tǒng),它會(huì)自適應(yīng)。
GPS Settings
在 Windows Mobile 5.0 和 Windows Mobile 6 的 Pocket PC 版操作系統(tǒng)中自帶了一個(gè) GPSID 的配置程序,在 Windows Mobile 6 Professional 中可以通過(guò)選擇“Start-->Settings-->System-->External GPS”打開(kāi)。
而 Smartphone 版的操作系統(tǒng)中并沒(méi)有自帶類(lèi)似的 GPSID 配置程序,這為開(kāi)發(fā) Smartphone 上的 GPS 應(yīng)用程序帶了一些不便。我是自己寫(xiě)了一個(gè),其實(shí)也不難,就是讀/寫(xiě)幾個(gè)注冊(cè)表的鍵值。
Windows Mobile 6 SDK 中提供了一個(gè)叫 GPS Settings 的工具,用于在 Smartphone 的操作系統(tǒng)配置 GPSID,功能跟 Pocket PC 上的一樣。在 C:\Program Files\Windows Mobile 6 SDK\Tools\GPS 目錄下找到 Settings.exe,并將它復(fù)制到 Smartphone 上運(yùn)行。
關(guān)于 GPSID 如何設(shè)置,這里不展開(kāi)了,如果你感興趣可以看我上面推薦的學(xué)習(xí)資料。
小總結(jié)
GPS Intermediate Driver 為我們開(kāi)發(fā)GPS 應(yīng)用程序帶來(lái)了很多好處,而 Windows Mobile 6 SDK 中提供的 Fake GPS 和 GPS Settings 這兩個(gè)小工具,彌補(bǔ)了 Windows Mobile 5.0 SDK 中的空缺,使得開(kāi)發(fā)基于 GPSID 的應(yīng)用程序更加方便。如果你對(duì)這兩個(gè)工具的工作原理感興趣,可以自己用 Reflector 打開(kāi)它們的程序集,好好研究一番,不明白的地方可以查 SDK 的幫助。另外,Windows Mobile 6 SDK 自帶了一個(gè) GPSID 示例的完整項(xiàng)目代碼,對(duì)于理解 GPSID 的工作原理很有幫助,并且它的代碼具有很高的重用價(jià)值,在 D:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS 目錄下可以找到這個(gè)示例。
【編輯推薦】
Windows Mobile 6.5 Widgets開(kāi)發(fā)初體驗(yàn)
微軟升級(jí)Windows Mobile 6.1 全新UI體驗(yàn)
Windows Mobile 6.5開(kāi)發(fā)環(huán)境搭建以及變化
把Windows Mobile換成Windows Phone 7的5大原因
Windows Mobile 5.0震撼登場(chǎng) 開(kāi)發(fā)者能創(chuàng)建強(qiáng)大應(yīng)用