在WinMobile手机中访问GPS功能

时间:2009-01-22 10:53:04

标签: windows-mobile gps

假设您有一台同时配备GPS接收器的Windows Mobile 6.0手机。 WinMobile SDK是否支持访问GPS功能?

如果没有,使用GPS进行编程的选项(API)是什么,即使用GPS功能编写应用程序。我主要对Windows Mobile 6.x感兴趣,但也请包括通用回复。

我一定会投票给出最有帮助的答案。

提前致谢。

6 个答案:

答案 0 :(得分:6)

两个选项:

  1. 有一个中间GPS驱动程序,在MSDN上有howto article for .Net
  2. 您可以连接到串口(当然可以在UI中配置)并自己解析NMEA字符串
  3. 选项(1)可能是可取的

答案 1 :(得分:5)

Chris Craft在他的系列 30天.NET Windows移动应用程序

中有很多这方面的源代码
  • 第1周 - 包括GPS指南针
  • 第3周 - 包括GPS车速表和GPS高度计
  • 第4周 - 包括GPS时钟

可悲的是,这个博客系列似乎已经死了,但幸好代码保存在Codeplex上:

  

30 Days of Windows Mobile Applications

可以在/dev/mobile上找到C的端口和一些原始帖子的讨论

Raffaele Limosani的博客上使用中级GPS驱动程序还有一些注意事项


编辑添加:

GPS.NET最近已成为开源软件,现在可在CodePlex上使用:

  

GPS.NET 3.0

答案 2 :(得分:3)

如果您计划在.NET Compact Framework中进行开发,那么Windows Mobile Developer Samples中有一个相当广泛的GPS示例。这基本上是利用gpsapi.dll周围的包裹,但它显示了作品。 我已经在C:\ Program Files \ Windows Mobile 6 SDK中安装了WM6套件,然后GPS示例在C:\ Program Files \ Windows Mobile 6 SDK \ Samples \ PocketPC \ CS \ GPS

祝你好运!

答案 3 :(得分:2)

尝试查看CodeProject.com上的一些解决方案。有很多关于Windows Mobile和GPS的非常好的文章。

答案 4 :(得分:1)

为了测试使用中间驱动程序的代码(请参阅其他答案),请不要忘记SDK中的FakeGPS实用程序,您可以使用该实用程序通过此中间驱动程序管理存储在文件中的NMEA流,以便您轻松测试该位置数据上的GPS软件实际上无需接收GPS并开始四处移动。

答案 5 :(得分:0)

从我的观点来看,读取串口(在我的情况下是COM5,波特率4800)和解析收到的数据要容易得多。 (如何解析字符串可以通过谷歌和短语:gps NMEA句子找到)

对我来说,无法理解地址上的例子:

C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS

这一切都是如此复杂和不直观。我期待更简单和有用的界面,如:

myGps = new GPS()
myGPS.getPosition

但这可能不可能:(

如何通过RS232进行操作?(我在VB.NET中工作)

在GUI(或以编程方式)创建对象System.IO.Ports.SerialPort并使用其事件DataReceived。每当数据来自GPS时,就会发生这种事件,并且在它的身体中你可以处理它。

数据的格式为loooong字符串,分为$ GPGGA,$ GPGSA等部分。重要的是$ GPGGA。每个特定信息由逗号分隔。比你只解析这个字符串 - 在VB.net中使用:myArray = myData.Split(“,”c)。

http://aprs.gids.nl/nmea/

PS:“,”“c”表示逗号为Char,而不是String(VB.NET)

正如您所看到的,不需要编写多行代码。 MS的例子是不必要的困难,不适合初学者。

PS2:请注意,您不向GPS发送任何命令。它会自动并定期向您的程序发送数据。你只需打开端口,从缓冲区读取所有数据,使用Chr()将其转换为字符串并解析它。没什么大不了的。