我想通过通过UDP触发的子进程调用来预热raspistill,然后在所需的时间通过单独的UDP命令触发图像捕获:
作为线程1的UDP_listener():
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()正在运行时,没有从树莓接收到任何输入/发送回ack。
我的方法是不正确的吗?我遗漏了什么?
谢谢你抽出时间史蒂夫
发布于 2021-09-10 15:18:10
当您启动线程来启动相机时,您需要执行以下操作:
t = threading.Thread(target= prime_camera)
t.start()
t.join()这意味着你启动了一个新的线程,,然后在t.join()上挂起--直到它退出,所以你在并行中什么也做不到。你需要让线程保持运行,以便它准备好响应你的后续信号,然后在完成拍照后加入它。
因此,删除t.join()并在raspistill进程完成后运行它。
https://stackoverflow.com/questions/69131941
复制相似问题