假设您有一部装有 GPS 接收器的 Windows Mobile 6.0 手机。WinMobile SDK 是否支持访问 GPS 功能?
如果没有,使用 GPS 编程的选项 (API) 是什么,即编写将使用 GPS 功能的应用程序。我主要对 Windows Mobile 6.x 感兴趣,但也请包含通用回复。
我一定会投票选出最有帮助的答案。
提前致谢。
假设您有一部装有 GPS 接收器的 Windows Mobile 6.0 手机。WinMobile SDK 是否支持访问 GPS 功能?
如果没有,使用 GPS 编程的选项 (API) 是什么,即编写将使用 GPS 功能的应用程序。我主要对 Windows Mobile 6.x 感兴趣,但也请包含通用回复。
我一定会投票选出最有帮助的答案。
提前致谢。
Chris Craft 在他的 .NET Windows Mobile 应用程序 30 天系列中为这类事情提供了大量源代码
遗憾的是,这个博客系列似乎已经死了,但幸运的是代码保存在 Codeplex 上:
可以在/dev/mobile上找到到 C 的端口以及围绕一些原始帖子的一些讨论
Raffaele Limosani的博客上还有一些关于使用中级 GPS 驱动程序的说明
编辑添加:
GPS.NET 最近已经开源,现在可以在 CodePlex 上使用:
如果您计划在 .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
祝你好运!
尝试查看CodeProject.com上的一些解决方案。有很多关于 Windows Mobile 和 GPS 的非常好的文章。
对于使用中间驱动程序的测试代码(请参阅其他答案),不要忘记 SDK 中的 FakeGPS 实用程序,您可以使用该实用程序通过此中间驱动程序将存储在文件中的 NMEA 流传输到文件中,以便您可以轻松地测试 GPS 软件该位置数据实际上不必接收 GPS 并开始四处走动。
从我的角度来看,读取串行端口(在我的情况下为 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)。
PS:","c 表示逗号是字符,而不是字符串 (VB.NET)
如您所见,只需编写几行代码即可。MS的例子是不必要的困难,不适合初学者。
PS2:请注意,您不会向 GPS 发送任何命令。它会自动定期向您的程序发送数据。您只需打开端口,从缓冲区读取所有数据,使用 Chr() 将其转换为字符串并解析它。没什么大不了的。