擅长:python、mysql、java
<p>如果您使用协同程序执行此操作,则需要获取并运行事件循环。我假设您使用的是python 3.7,在这种情况下,您可以执行以下操作:</p>
<pre><code>import asyncio
from gpiozero import MotionSensor
class MotionSensorHandler():
__whenMotionCallback = None
def __init__(self, pin, whenMotionCallback):
# whenMotionCallback is an async function
self.__whenMotionCallback = whenMotionCallback
# Just init the sensor with gpiozero lib
motionSensor = MotionSensor(pin)
# Method to call when motion is detected
loop = asyncio.get_event_loop()
motionSensor.when_motion = loop.run_until_complete(self.whenMotion())
loop.close()
async def whenMotion(self):
await self.__whenMotionCallback()
</code></pre>
<p>如果您使用的是python3.8,那么只需使用<code>asyncio.run</code>,而不是所有显式获取和运行事件循环的函数。你知道吗</p>