2010-07-28 19 views
1

我正在尋找一個非常簡單的解決方案,即如何從WM6手機中檢索GPS數據。我不是在尋找GPS封裝庫(Google似乎只能找到GPS庫)。我會很感激只是一段代碼,它完全是這樣的:開始GPS,檢索長期和拉特,結束GPS。而已。我想用.NET Compact Framework我需要使用P/Invoke。
任何想法?非常感謝。從使用.NET的WM6手機查詢GPS位置(僅限長和經度)CF

回答

1

你說你不是在尋找一個GPS Wrapper庫,但你想查詢GPS。最簡單的方法是使用GPS中間庫,這是一個流接口驅動程序。從託管代碼中調用它需要某種形式的包裝來完成P/Invoke調用。無論你是寫這個,還是使用已經存在的一個都取決於你,但是無論如何你都會使用包裝。

要只需打開GPS,獲得位置並關閉它將會是一組三個電話:GpsOpenDeviceGpsGetPositionGpsCloseDevice,但是調用GpsOpenDevice後,你真的需要知道什麼時候該驅動程序初始化調用GpsGetPosition前,因此您可能還需要撥打GpsGetDeviceState以瞭解它何時準備就緒。

由於您不需要通知,所以對GpsOpenDevice的調用很簡單 - 只需傳入零(或IntPtr.Zero,取決於您如何定義P/Invoke方法)所有參數。

GpsGetPosition將指針指向一個GPS_POSITION結構體。這是一個醜陋的野獸,但不是太糟糕,因爲它沒有任何指針可以分配,並且CF Marshaler有一點幫助,可以很容易地編組它。

我不打算在這裏寫這段代碼,因爲它很長,而且它已經在Microsoft提供的WinMo SDK的GPS示例應用程序中完成(在%PROGRAM FILES%\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS的硬盤上查看)。