【发布时间】:2016-07-20 06:34:47
【问题描述】:
我在网上阅读了一些 GPIO 中断文档,例如 this,但我还有一个问题:需要在 python 脚本中使用 GPIO.add_event_detect(<PIN>, <GPIO.EDGE>, callback=<some callback function>, bouncetime=<int>),才能在同一脚本中使用 while true 循环来运行此脚本“没完没了”来处理回调例程?
让我们说得更清楚。我的脚本应该是这样的:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(6, GPIO.OUT)
def my_interrupt_routine(channel):
#do something here
GPIO.add_event_detect(6, GPIO.FALLING, callback=my_interrupt_routine, bouncetime=200)
try:
while True:
pass
except KeyboardInterrupt:
#do something here
finally:
GPIO.cleanup()
所以使用这个脚本 - 是否有必要让 while true: 循环让中断处理程序等待 Pin6 上的下降沿,或者我可以激活处理程序并结束程序吗?
我之所以问这个问题是因为我阅读了许多关于使用中断处理程序与轮询 GPIO 引脚的优势的文章。而这个while true: 循环在我看来几乎是一样的,就像在 Pins 上轮询一样。
我以前用Java开发。在那里您定义中断处理程序/侦听器,然后您可以在世界另一端的某个地方处理事件。我认为这在 Python 中不起作用,对吧?
【问题讨论】:
标签: python-3.x gpio interrupt-handling raspberry-pi3