作品書籍課程程式集小說集論文集散文集影片集編輯雜誌程式人電子書JavaScript計算語言學微積分Blender 動畫C# 語言系統程式高等 C 語言JavaAndroidVerilogWikidotR 統計軟體機率統計計算機數學組合語言人工智慧開放原始碼網路資源運用計算機結構相關訊息常用工具友站連結在家教育RSS最新修改網頁列表簡體版English |
簡介如果您的電腦上有 GPS 衛星接收器,在該接收器接上後,衛星定位的訊息會從 ComPort 源源不斷的傳回來,這些訊息是以 NMEA 格式編碼的文字訊息,其格式如下所示。
其中,最重要的資訊是座標資訊,紀錄在以 GPSGGA 開頭的欄位中,以下是其欄位的說明:
從 ComPort 讀取衛星座標在配備有 GPS 的電腦或手機當中,這個資訊會從某個 COM port (例如:COM1) 當中傳入,因此,只要一個從 ComPort 讀取資料的無窮迴圈,就能不斷顯示您現在的衛星座標。 但是如果每個程式都自行去開啟 ComPort,那麼,第一個開啟的人將會搶到該 ComPort,於是第二個開啟的程式將無法開啟 ComPort 而導致失敗。
使用系統 API 讀取衛星資訊因此,許多支援 GPS 的程式開發環境,都會由系統提供衛星定位的 API,以方便應用程式取得衛星座標,像是 iPhone, Android, Windows Mobile 等手機系統,都提供了這樣的 GPS API,讓應用程式在讀取衛星資訊時不會導致鎖定 ComPort 的問題。所以程式設計師應該盡量使用這些 GPS API 以取的衛星資訊。 微軟的 Windows Mobile 6.0 中並沒有提供 .NET 版本的 GPS 元件給 C#, VB 等語言使用。於是使用者必須自行對 C++ 所寫的 *.dll 程式加以封裝,以便提供 C#, VB 等語言使用。 微軟的 Gps 系統函式主要包含 GPSOpenDevice(), GPSCloseDevice(), GPSGetPosition(), GPSGetDeviceState() 等函數,您必須搭配 CreateEvent(), CloseEvent(), WaitForMultipleObjects(), EventModify() 等系統函數,才能順利將其封裝為 C# 元件。以下是 C# 在封裝 GPS 系統函數時所需使用的函數宣告。
以上程式對於不熟悉微軟系統 C++ 程式的人而言,會形成一些障礙。還好,微軟在其 Code Samples for Windows Mobile 範例程式集中提供了一個 GPS 接收器範例 GPS Application ,並在該範例中將 GPS 封裝為 Microsoft.WindowsMobile.Samples.Location 專案,您只要將這個專案 (Microsoft.WindowsMobile.Samples.Location.csproj) 加入到您的方案總管中,就可以使用較簡單的方式取的衛星資訊,以下是該專案的檔案畫面,僅供參考。 微軟的 GPS 封裝專案 結語雖然我們可以利用讀取 ComPort 的方式取得衛星座標訊息,但是應用程式的設計師最好不要這麼作,因為這會讓其他程式無法開啟該 ComPort 以讀取衛星資訊。正確的方法是利用系統所提供的 GPS 函數,利用回呼 (Callback) 的方式取得 GPS 座標,才不會霸佔 ComPort 而造成其他程式的問題。 |
衛星程式的運作原理
page revision: 4, last edited: 16 Nov 2009 02:23
Post preview:
Close preview