關於Windows Mobile GPSID的問題

來源:互聯網
上載者:User

    自從Windows Mobile提供了GPSID介面後,極大的省略了操縱Windows Mobile與GPS裝置之間的通訊問題,想當年哥為了讀取外部一個藍芽GPS的資料,又是串口又是線程的,麻煩的很啊!

    貌似從WM5.0後開始提供GPSID這一中間驅動介面,極大的簡化了我們的工作,但在用模擬器的調試過程中發現微軟提供的這一介面中有一小小的bug!在微軟提供的GPSID庫中,有一個檔案 GpsPosition.cs 存在bug。

代碼        /// <summary>        /// Parses out the degrees, minutes, seconds from the double format returned by        /// the NMEA GPS device        /// </summary>        /// <param name="val">degrees, minutes, seconds as a double</param>        /// <returns>DegreesMinutesSeconds structure</returns>        private DegreesMinutesSeconds ParseDegreesMinutesSeconds(double val)        {                 if (val < 0) val = -val;            //這裡在Windows Mobile5.0下是ddmm.mmmmm的格式  在wm6.0下是dd.dddddd格式            int Marjor = System.Environment.OSVersion.Version.Major;            int Minor = System.Environment.OSVersion.Version.Minor;            if (Marjor == 5 && Minor == 0) //Windows Mobile 5.0版本            {                double degrees = (val / 100.0);                double minutes = (Math.Abs(degrees) - Math.Abs((double)(int)(degrees))) * 100;                double seconds = (Math.Abs(val) - Math.Abs((double)(int)val)) * 60.0;                return new DegreesMinutesSeconds((int)degrees, (int)minutes, seconds);            }            else            {                //Windows Mobile 6.0版本                int degrees = (int)(val);                double dminutes = (val - degrees) * 60.0;                int minutes = (int)dminutes;                double seconds = (dminutes - minutes) * 60.0;                return new DegreesMinutesSeconds(degrees, minutes, seconds);            }        }

    經過調試和測試,發現在WM5.0和Wm6.0下,這個函數會出現問題,在5.0後6.0下從gps讀取的資料格式是不一樣的,詳細見上面代碼部分的注釋!

    必須對這個函數進行改寫,首先第一步必須判斷裝置是採用Windows Mobile 5.0還是Windows Mobile 6.0,通過System.Environment.OSVersion.Version的主要版本和此版本號碼可以擷取目前的裝置是採用的上面版本,我搜了MSDN沒見官方說明如何通過版本號碼來識別Windows Mobile 5.0和Wm6.0,網上有網友很肯定的說

“I believe WM5 is 5.01 and WM6 is 5.02.”(詳見《detect what version of windows mobile device is running》http://social.msdn.microsoft.com/Forums/zh-HK/netfxcompact/thread/8079e32f-b058-4ae7-b334-73eb3f51967e  ),經過測試,Wm6確實是5.02通過次版本號碼來確定,見上述代碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.