Python 3在树莓派上通过UDP与子进程交互



我想通过通过UDP触发的子进程调用来预热raspisstill,然后在所需的时间通过单独的UDP命令触发图像捕获:

UDP_listener()作为线程1:

if data == "PRIME":
print("Priming...")
if (isTakingImage == False):
t = threading.Thread(target= prime_camera)  
t.start()
t.join()
if data == "IMAGE":
print("taking image")
t2 = threading.Thread(target = take_image)
t2.start()
t2.join()

prime_camera()作为线程2

cmd = 'raspistill -t 0 -o test.jpg -s
p1 = Popen(shlex.split(cmd))

如何传递进一步的通信以成功触发:

take_image():
cmd = "pkill -USR1 raspistill"
p2 = Popen(shlex.split(cmd))

当前,在prime_camera()运行时,没有从Raspberry接收或发送ack。

我的方法不正确吗?我错过了什么?

谢谢你的时间史蒂夫。

当你启动你的线程来启动相机时,你做:

t = threading.Thread(target= prime_camera)  
t.start()
t.join()

意味着你启动一个新的线程,然后挂起t.join()-等待,直到它退出,所以你没有实现并行。你需要让线程运行,以便它准备好响应你的后续信号,然后在你完成拍照后加入它。

因此,删除t.join()并在raspistill进程完成后运行它。

最新更新