4

假设您有一部装有 GPS 接收器的 Windows Mobile 6.0 手机。WinMobile SDK 是否支持访问 GPS 功能?

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

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

提前致谢。

4

6 回答 6

6

两种选择:

  1. 有中间 GPS 驱动程序,在 MSDN 上有一篇关于 .Net的操作指南文章
  2. 您可以连接到串行端口(当然可以在 UI 中配置)并自己解析 NMEA 字符串

选项(1)可能是可取的

于 2009-01-22T11:08:28.240 回答
5

Chris Craft 在他的 .NET Windows Mobile 应用程序 30 天系列中为这类事情提供了大量源代码

  • 第 1 周 - 包括 GPS 指南针
  • 第 3 周 - 包括 GPS 速度计和 GPS 高度计
  • 第 4 周 - 包括 GPS 时钟

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

30 天的 Windows 移动应用程序

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

Raffaele Limosani的博客上还有一些关于使用中级 GPS 驱动程序的说明


编辑添加:

GPS.NET 最近已经开源,现在可以在 CodePlex 上使用:

GPS.NET 3.0

于 2009-01-22T11:22:46.760 回答
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

祝你好运!

于 2009-01-22T11:08:01.127 回答
2

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

于 2009-01-22T11:34:13.430 回答
1

对于使用中间驱动程序的测试代码(请参阅其他答案),不要忘记 SDK 中的 FakeGPS 实用程序,您可以使用该实用程序通过此中间驱动程序将存储在文件中的 NMEA 流传输到文件中,以便您可以轻松地测试 GPS 软件该位置数据实际上不必接收 GPS 并开始四处走动。

于 2009-01-22T11:34:15.597 回答
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 表示逗号是字符,而不是字符串 (VB.NET)

如您所见,只需编写几行代码即可。MS的例子是不必要的困难,不适合初学者。

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

于 2011-09-19T13:06:43.433 回答