首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3在Raspberry Pi上通过UDP与子进程交互

Python 3在Raspberry Pi上通过UDP与子进程交互
EN

Stack Overflow用户
提问于 2021-09-10 12:05:25
回答 1查看 58关注 0票数 0

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

作为线程1的UDP_listener()

代码语言:javascript
复制
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

代码语言:javascript
复制
cmd = 'raspistill -t 0 -o test.jpg -s
p1 = Popen(shlex.split(cmd))

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

代码语言:javascript
复制
take_image():
     cmd = "pkill -USR1 raspistill"
     p2 = Popen(shlex.split(cmd))

当前,当prime_camera()正在运行时,没有从树莓接收到任何输入/发送回ack。

我的方法是不正确的吗?我遗漏了什么?

谢谢你抽出时间史蒂夫

EN

回答 1

Stack Overflow用户

发布于 2021-09-10 15:18:10

当您启动线程来启动相机时,您需要执行以下操作:

代码语言:javascript
复制
t = threading.Thread(target= prime_camera)  
t.start()
t.join()

这意味着你启动了一个新的线程,,然后在t.join()上挂起--直到它退出,所以你在并行中什么也做不到。你需要让线程保持运行,以便它准备好响应你的后续信号,然后在完成拍照后加入它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69131941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档