我想通过通过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
进程完成后运行它。