WM--GPS开发

  前几天,有朋友托我给他写个GPS程序,就取经纬度坐标,以及将之转换成高斯直角坐标。花了一些时间,给他做了个小程序。

  后来总结时,想起,很多网上朋友都会问及关于GPS开发的一些事。我这里先将我的程序解释下,然后再总结下,相关经验及个人看法。

  目前在一些移动设备中,都提供GPS功能,设备中都需要一个接收器,用来接收GPS信号。(类似于GPRS工作方式)。GPS一旦启动后,会自动连接卫星,接收信号,通过算法计算出位置等信息,然后以NMEA data的格式输出。GPS receiver就是接收卫星信号转换成NMEA data的设备。

  开发GPS有3种选择:
  1、直接使用串口连接GPS接收器
  2、GPS Intermediate Driver
  3、使用第三方类库(目前openNETcf提供相应类库)

  目前,WM5.0以上系统,都内置了GPS Intermediate Driver。通过它,我们能够很方便的取道GPS数据。

  关于GPS方面的文章可以参考:
  1、30 Days of .NET [Windows Mobile Applications] - Day 03: GPS Compass(GPS指南针)
  2.NET Compact Framework下的GPS NMEA data数据分析

  虽然GPS Intermediate Driver提供了我们非常快捷的取得GPS信息,但同时也有一定的弊端。

  那下面我讲介绍我如何在该项目中使用GPS的。

  我使用GPS Intermediate Driver,它能够快速开发,MS也提供了很强大的例子来方便我们使用。
在微软的WM SDK安装目录下有GPS工程。(Windows Mobile 6 SDK/Samples/PocketPC/CS/GPS)

  该Demo中
  GPS.cs:封装了GPS的操作类,比如Open(),Close(),Connect()。可以很快捷的使用。
  GpsDeviceState.cs:用于取得目前GPS设备的状态信息。
  GpsPosition.cs:每次GPS数据取得后,都会放入该类。
  LocationChangedEventArgs.cs:一旦位置改变,即可将新的GPSPosition取得到。

public void Open()
{
    
if (!Opened)
    {
         
// create handles for GPS events
         newLocationHandle = CreateEvent(IntPtr.Zero, 00null);
         deviceStateChangedHandle 
= CreateEvent(IntPtr.Zero, 00null);
         stopHandle 
= CreateEvent(IntPtr.Zero, 00null);

         gpsHandle 
= GPSOpenDevice(newLocationHandle, deviceStateChangedHan
dle, 
null0);

         
// if events were hooked up before the device was opened, we'll need
         
// to create the gps event thread.
         if (locationChanged != null || deviceStateChanged != null)
         {
             CreateGpsEventThread();
         }
    }
}

NET技术WM--GPS开发,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。