求助GPS数据用NMEA解析时出现问题

2025-01-18 20:26:13
推荐回答(1个)
回答1:

下面有一段 NMEA 数据可供测试:
$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21
$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
$GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77
$GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42
$GPGSV,3,3,9,134,0,0,0*46
$GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*21
$GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75
$GPGLL,4738.0172,N,12211.1874,W,191935.767,A*21
$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E
$GPRMC,191935.767,A,4738.0172,N,12211.1874,W,0.081611,15.81,291004,,*2A

这里我选择了 fakegpsdata.txt 作为测试数据。点击 done 按钮保存设置并关闭 Fake GPS。然后运行我前段时间编写的一个坐标采集工具 Smart GPS Tracker,它是基于 Windows Mobile 5.0 GPSID 编写的,效果如下:
到此为止,我没有用到一台真实的设备。Fake GPS 适用于 Pocket PC 和 Smartphone 两种操作系统,它会自适应。
GPS Settings

在 Windows Mobile 5.0 和 Windows Mobile 6 的 Pocket PC 版操作系统中自带了一个 GPSID 的配置程序,在 Windows Mobile 6 Professional 中可以通过选择“Start--> Settings--> System--> External GPS”打开。

而 Smartphone 版的操作系统中并没有自带类似的 GPSID 配置程序,这为开发 Smartphone 上的 GPS 应用程序带了一些不便。我是自己写了一个,其实也不难,就是读/写几个注册表的键值。

Windows Mobile 6 SDK 中提供了一个叫 GPS Settings 的工具,用于在 Smartphone 的操作系统配置 GPSID,功能跟 Pocket PC 上的一样。在 C:\Program Files\Windows Mobile 6 SDK\Tools\GPS 目录下找到 Settings.exe,并将它复制到 Smartphone 上运行。
关于 GPSID 如何设置,这里不展开了,如果你感兴趣可以看我上面推荐的学习资料。

总结

GPS Intermediate Driver 为我们开发 GPS 应用程序带来了很多好处,而 Windows Mobile 6 SDK 中提供的 Fake GPS 和 GPS Settings 这两个小工具,弥补了 Windows Mobile 5.0 SDK 中的空缺,使得开发基于 GPSID 的应用程序更加方便。如果你对这两个工具的工作原理感兴趣,可以自己用 Reflector 打开它们的程序集,好好研究一番,不明白的地方可以查 SDK 的帮助。另外,Windows Mobile 6 SDK 自带了一个 GPSID 示例的完整项目代码,对于理解 GPSID 的工作原理很有帮助,并且它的代码具有很高的重用价值,在 D:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS 目录下可以找到这个示例。