是否可以获取位置数据 谷歌齿轮, 谷歌地理定位API 或任何其他网络位置 API(例如 火鹰)的格式是否会在其他软件中显示为 GPS 设备?

我在读时突然想到 这些答案 关于我在超级用户上关于 WiFi 位置查找的问题,如果我可以模拟 GPS 单元,那么许多这些网络服务可以充当“穷人”GPS,而其他需要它的不太有用的软件。

全球定位系统 一个选项?

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

有帮助吗?

解决方案

有一个 非常相似的线程 在提到 Windows 的 Python 邮件列表上 虚拟COM端口 并讨论 Unix 的伪 tty 功能。如果您要使用的应用程序允许您输入特定的 tty 设备文件,这可能是最简单的途径。(没有要求作者为你想要做的事情提供一个插件API,或者给自己买一个 20 美元蓝牙 GPS 鼠标.)

您使用的是 OS X 吗?

有一个项目 macosx虚拟串口 在 Google 代码上,它提供了一个图形包装器,围绕一个名为 索卡特. 。如果您看到伪 tty 路线的潜力,我建议您看看 socat。我相信您可以使用 socat 将管道从 Python 程序链接到伪 tty。

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

在这种情况下,除非您能找到一个已经实现了此类功能的项目,否则您将需要实现一个驱动程序,如此处所述 如何创建虚拟COM端口 线。如果您要麻烦地创建一个设备驱动程序,您可能会希望将其基于 IOKit,因为可能存在 IOServiceMatching 查询。您可以在该帖子顶部找到 Apple16X50Serial 项目 Apple 的开源代码列表 (转到 主页 如果您想针对 10.6 之前的版本,请选择较旧的操作系统版本)。

如果您的应用程序对实时数据最有用(例如Python 邮件列表线程中提到的 RouteBuddy 应用程序 可以记录当前位置)那么您将需要从您的网络源获取更新(希望它们支持长轮询)并将其转换为基本 国家海洋环境局 RMC 句子。您不想从驱动程序代码内部执行此操作。相反,将您的工作划分为可以通信的内核态和用户态部分,并将尽可能少的代码放入内核部分。

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

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

其他提示

我不是很确定如何完成你所要求,但我可以借给一些见解你怎么可能 开始 得到它的完成。因此,这里的那样:

一个GPS装置显示,大多数系统,因为没有什么比一个序列的装置--的一个。k.a.COM口如果你处理Windows/dev/ttySx如果你*尼克斯。按定义,一串口的具体职责是流数据跨越巴士、一个街区的时间。因此,它将按照逻辑上,如果你想模仿存在的一个GPS装置,你应该收集的数据你是耗时且把它变成一个流,以某种方式的行为就像一个活跃的串口。

然而,有一些并发症,你可能想要考虑:

  • 最GPS设备不只是发出位置数据;还有的信息,对卫星的位置,修复的质量,承载,等等。再说,没有人作出任何规则说你 要使所有这些数据可用。有可能更多,但我要承认,我需要做更多的研究在这一地区自己。
  • 我不确定你能多快收到的数据在处理与谷歌的纬度,等等, 但任何拖延收肯定会导致在可见的将暂停在你的"串口"'s数据流。再次,这可能不是一样大的并发症,因为它似乎,因为全球定位系统装置被称为"突发"数据跨越巴士,无论如何,但是我肯定会留意这一点。你要确保总有一个剩余数据来,不短缺。

沿着你的方式也会有变坐标你收到为有效的GPS的句子。你可以找到规范的那些,但我肯定会让朋友式的标准--尽管它是一个有缺陷的标准,这是一个每个人似乎都同意。

希望这有助于你,至少有一点点。有了详细的具体问题,你认为可能有助于回答这个问题?

看一看到 Franson GPS门它允许你连接到谷歌地球除其他事项外(如模拟GPS等)。只是虽然窗户,但我认为你可以从中得到一些有益的思路。

scroll top