geolocation - 模拟 GPS 或串行设备

标签 geolocation gps mapping google-latitude

是否可以从 Google Gears 中获取位置数据? , Google Gelocation API或任何其他 Web 位置 API(例如 Fire Eagle ),其格式在其他软件中显示为 GPS 设备?

我读到 these answers关于我在 super 用户上关于 WiFi 位置查找的问题,如果我可以模拟 GPS 单元,那么这些网络服务中的许多都可以充当“穷人” GPS,否则需要它的用处不大的软件。

GPSD一个选项?

最好是 OSX 和 Python,但我会对任何实现感兴趣。

最佳答案

Python 邮件列表中有一个 very similar thread 提到了 Windows virtual COM ports 并讨论了 Unix 的伪 tty 功能。如果您要使用的应用程序允许您输入特定的 tty 设备文件,这可能是最简单的方法。 (没有要求作者为您尝试做的事情提供插件 API,或者为自己购买一个 $20 bluetooth GPS mouse 。)

你在使用 OS X 吗?

Google 代码上有一个项目 macosxvirtualserialport ,它提供了一个图形包装器,围绕着一个名为 socat 的实用程序的一些功能。如果您看到伪 tty 路线的潜力,我建议您看看 socat。我相信您可以使用 socat 将管道从 Python 程序链接到伪 tty。

大多数 native Mac 应用程序将查询 IOServiceMatching 以查找具有 kIOSerialBSDRS232Type 的设备,我怀疑伪 tty 是否会显示为 IOKit 服务。

在这种情况下,除非你能找到一个已经实现了这样的东西的项目,否则你将需要实现一个驱动程序,如这个 How to create virtual COM port 线程中所述。如果您要创 build 备驱动程序的麻烦,您会希望它基于 IOKit,因为可能存在 IOServiceMatching 查询。您可以在 Apple's open source code list 顶部找到该帖子中提到的 Apple16X50Serial 项目(如果您想针对 10.6 之前的内容,请转到 main page 并选择较旧的操作系统版本)。

如果您的应用程序对实时数据最有用(例如 Python 邮件列表线程 can log current positions 中提到的 RouteBuddy 应用程序),那么您将希望从您的网络资源中获取更新(希望它们支持长轮询)并将它们转换为基本的 NMEA RMC 语句。您不想从驱动程序代码中执行此操作。相反,将您的工作划分为可以通信的内核级和用户级部分,并尽可能少地将代码放入内核部分。

如果您想让应用程序同时读取和写入这些 Web 服务,最好的选择可能是模拟 Garmin 设备。 Garmin 或多或少地在 IntfSpec.pdf 文件中记录了他们的协议(protocol),该文件包含在他们的 Device Interface SDK 中。同样,您希望尽可能多地拆分为用户空间代码。

我找不到一个项目或实用程序来实现基于 IOKit 的虚拟串行接口(interface)的内核端,但如果那里没有一个隐藏的地方,我会感到惊讶。不幸的是,我对这个问题找到的大多数答案都是这样的,开发人员被告知要忙 writing a kext

关于geolocation - 模拟 GPS 或串行设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1661333/

相关文章:

gps - 将 ubx 文件转换为 RINEX;没有获取.nav 文件,为什么?

ios - 迁移核心数据和映射模型

javascript - jquery从另一个函数获取变量

android - 如何在没有 'onLocationChange' 方法的情况下知道 GPS 位置

javascript - html 地理位置 : Unknown error acquiring position

xml - 如何从 GPX 文件计算距离?

google-maps - Google Maps v3 getBounds超出了 map 上可见的范围

java - Mybatis 如何将另一个表中的列映射到字符串列表?

android - 用地理坐标(纬度、经度)计算物体的方向

algorithm - 有哪些预先存在的服务可用于计算两个地址之间的距离?