gpt4 book ai didi

Python 一次做这两件事,多任务处理与否?

转载 作者:行者123 更新时间:2023-12-05 05:41:53 25 4
gpt4 key购买 nike

编辑

来自 manish 和 njzk2 的建议:

现在我记得尝试使用 when_motion 但得到:

类型错误:“NoneType”对象不可调用

当放入函数时。

像你建议的那样把它放在函数之外似乎是个好主意,但错误仍然弹出并中断 .inventory()尽管没有 Action 发生,但声音也在立即播放

我做了什么:

from PN5180 import PN5180
from gpiozero import MotionSensor
import vlc

player = vlc.MediaPlayer()

def play(element):
print ("{}!".format(element))
player.set_media(vlc.Media("{}.wav".format(element)))
player.play()

while True:


cards = PN5180().inventory()
print(f"{len(cards)} card(s) detected: {' - '.join(cards)}")
cardcount = len(cards)

MotionSensor(17).when_motion(Play("feu"))

仍然出现错误:

MotionSensor(17).when_motion(Play("feu"))

类型错误:“NoneType”对象不可调用

即使在最简单的上下文中:

from gpiozero import MotionSensor

While true:

MotionSensor(17).when_motion()
print("motion detected")

返回错误。

这是什么意思?


我目前正在尝试设置我的第一个 python/raspberry pi 项目

为了连接 rfid 阅读器,我正在使用这个库:https://github.com/fservida/pyPN5180

它包含一个可用的方法,该方法返回最多 16 个 nfc 礼物芯片的列表。据我了解,为了更新它,您需要将其放入循环中。

from PN5180 import PN5180

reader = PN5180

while True:
cards = reader.inventory() #getting the list
print(f"{len(cards)} card(s) detected: {' - '.join(cards)}")
time.sleep(.4)

我想在监听 3 个运动传感器上的移动的同时不断地监听芯片

但是如果我添加我的传感器功能

from PN5180 import PN5180

reader = PN5180

while True:
cards = reader.inventory() #getting the list
print(f"{len(cards)} card(s) detected: {' - '.join(cards)}")
time.sleep(.4)

mySensorFonction()

然后卡片列表不再迭代/更新,将卡片放在阅读器上不会触发我调用的任何内容

以下是传感器功能以防万一:

from gpiozero import MotionSensor
import vlc

player = vlc.MediaPlayer()

def PirSound(pin, element):

pir = MotionSensor(pin=pin)
pir.wait_for_motion()
print ("{}!".format(element))
player.set_media(vlc.Media("{}.wav".format(element)))
player.play()


我希望检测到的芯片列表在做其他事情的同时不断更新,并且能够在我想触发事件和状态的任何时候获取列表中的内容

通过快速搜索,我偶然发现了多任务库。这是我的解决方案吗?你会如何设置它?

希望它足够清楚^^

最佳答案

使用

def play():
print ("{}!".format(element))
player.set_media(vlc.Media("{}.wav".format(element)))
player.play()

and

pir.when_motion(play)

而不是调用 wait_for_motion()

wait_for_motion 处于阻塞状态(...它等待一个 Action ),而 when_motion 注册一个在检测到 Action 时调用的回调。

关于Python 一次做这两件事,多任务处理与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72207556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com