2012-11-05 93 views
1

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

我一般的延时程序是用Python编写的,所以这是我到目前为止有:

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

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

谢谢你的帮助。

回答

3

the docs,你应该来查看控制台输出,而是使用gpsd作为d aemon,通过TCP把它传达:

客户端应用交流会与gpsd通过TCP/IP端口,默认2947)。

+0

还有一个python gps模块仅用于gpsd。谢谢你指点我正确的轨道 – mh00h

2

这是行不通的吗?我没有测试过它。

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

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

proc.terminate() 
+0

当我运行这个,它不会终止gpsd。我知道如何让它停止的唯一方法是Ctrl + Shift + C。 – mh00h

+0

用'kill'方法替换'terminate'方法。或者发送proc' SIGINT'。看看Eric的解决方案 - 我不熟悉'gpsd',但它听起来像有一个通信套接字(通过他的响应)。如果守护进程支持它,那将是正确的方式。 – tMC