在python脚本中运行bash命令X秒

时间:2012-11-05 21:49:37

标签: python raspberry-pi gpsd

我有一个gps连接到我的覆盆子pi,我正试图用它来传入来自相机的照片。通过发出命令“gpsd -nND2 / dev / ttyUSB0”,我可以得到连续gps数据的bash echo输出,以后可以解析。然而,我只需要平均10个数据点(在10秒内收集),并希望在此之后关闭gpsd。

我的一般游戏中时光倒流程序是用python编写的,所以这就是我到目前为止所做的:

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

根据the docs,您应该查看控制台输出,而是使用gpsd作为 d aemon,进行通信它通过TCP:

  

客户端应用程序默认情况下将通过TCP / IP端口2947与gpsd通信。

答案 1 :(得分:2)

这有用吗?我没有测试过它。

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

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

proc.terminate()