【问题标题】:Access GPS functionality in WinMobile phones访问 WinMobile 手机中的 GPS 功能
【发布时间】:2010-10-02 21:23:24
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

    标签: windows-mobile gps


    【解决方案1】:

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

    祝你好运!

    【讨论】:

    【解决方案2】:

    两种选择:

    1. 有中间GPS驱动,MSDN上有howto article for .Net
    2. 您可以连接到串行端口(当然可以在 UI 中配置)并自己解析 NMEA 字符串

    选项(1)可能是可取的

    【讨论】:

      【解决方案3】:

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

      中提供了很多这类东西的源代码
      • 第 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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            从我的角度来看,读取串行端口(在我的情况下为 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 时,就会发生此事件,您可以在它的主体中对其进行处理。

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

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

            PS: ","c 表示逗号是一个字符,而不是字符串 (VB.NET)

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-05-04
              • 1970-01-01
              • 1970-01-01
              • 2015-10-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多