2008年5月30日 星期五

GPS Intermediate Driver

Windows Mobile 5.0引進了GPS Intermediate Driver (GPSID),開發基於GPS的應用程式變得簡單多了。原因是它在開發人員編寫的應用程序和 GPS 設備之間加入了一個中間層,使開發人員不需要通過串口直接存取GPS設備,而是透過GPSID提供的API由GPSID再去存取GPS,這樣一來,編寫出來的GPS應用程式具有設備無關性。另外,GPSID還有兩個好處:1.多個應用程式可以同時一個 GPS設備 2.不需要再去解析NMEA資訊 《以上出自Windows Mobile 6 SDK 中的 GPS 工具

能提供這麼好的API,寫起程式事半功倍阿,沒什麼好說的了,程式碼再簡單不過:
'自行加入參考:Microsoft.WindowsMobile.Samples.Location.dll (一樣在WM5 SDK內)
Imports Microsoft.WindowsMobile.Samples.Location

Dim gps1 As New Gps
Private Sub GPS_OPEN(...) Handles Button1.Click
If (Not gps1.Opened) Then
gps1.Open()
End If
End Sub

Private Sub GPS_CLOSE(...) Handles Button2.Click
If (gps1.Opened) Then
gps1.Close()
End If
End Sub

Private Sub GPS_GET(...) Handles Button3.Click
If (Not gps1.Opened) Then
Label1.Text = "GPS NOT OPEN"
Else
Dim position As GpsPosition = gps1.GetPosition
Label2.Text = "經度:" & position.Longitude.ToString
Label3.Text = "緯度:" & position.Latitude.ToString
End If
End Sub

另外發現一個好東東Fake GPS,它可以模擬出GPS接收訊號的動作,而數據也可以自行定義,這個tool被放在WM6 SDK之中(C:\Program Files\Windows Mobile 6 SDK\Tools\GPS),如此programer就不用跑到戶外去傻傻的等了. 記得要配合GPS Settings把COM Port設定好.

Ref:
在WM6 SDK Sample下有兩支關於GPS的程式
GPSID相關:
Example GPS Intermediate Driver Registry Settings
Topic: GPS sample and Windows Mobile 2005

3 意見:

達可鴨 提到...

沒想到現在寫GPS程式這麼爽,還是我太喜憨,我以前寫的程式都是自己解析NMEA資訊的,除錯搞了老半天,有些錯誤還會因為經緯度不同而發生 = =||

Unknown 提到...

嗯阿~.NET Framework總是有辦法讓你快速開發
達可真是我的fan~

匿名 提到...

你好我想請問一下:
要如何把執行檔包成cab使的可以灌在手機?因為我用模擬的,可是他device抓的到而position抓不到(sdk裡gps的範例),我在想是不是手機同步沒搞好..可是connect, cradle, activesyn看起來都是ok的@@
請問你有在activesync/simulator做什麼樣的設定嗎?
謝謝^^"