1

我有一个 gps 连接到我的树莓派,并试图用它来对来自传入相机的照片进行地理标记。通过发出命令“gpsd -nND2 /dev/ttyUSB0”,我可以获得连续 gps 数据的 bash 回显输出,以后可以对其进行解析。但是,我只需要平均 10 个左右的数据点(在 10 秒内收集),然后想关闭 gpsd。

我的一般延时程序是用 python 编写的,所以这是我目前所拥有的:

(stdout, stderr) = Popen(["gpsd","-nND2,"/dev/ttyUSB0"], stdout=PIPE).communicate()

不幸的是,这将向变量stdout 输出我无法解析的无限数量的数据点。输出很像一个永无止境的 ping 例程。如何停止数据收集以进行合理/可解析的数据转储?

感谢您的帮助。

4

2 回答 2

3

根据文档,您应该查看控制台输出,而是将其用作守护进程,通过 TCP 与其通信:gpsd

客户端应用程序将通过 TCP/IP 端口(默认为 2947)与 gpsd 通信。

于 2012-11-05T22:05:56.530 回答
2

这行得通吗?我没有测试过。

proc = Popen(["gpsd","-nND2","/dev/ttyUSB0"], stdout=PIPE)

samples = []
for _ in range(10):
    samples.append(proc.stdout.readline())

proc.terminate()
于 2012-11-05T21:54:12.727 回答