Raspberry Pi3 - Python3:GPIO.add_event_detect 是否需要 "while true" 循环?
Raspberry Pi3 - Python3: does GPIO.add_event_detect needs a "while true" loop?
我在网上阅读了一些 GPIO 中断文档,例如 this,还有一个问题留给我:需要在 python 脚本中使用 GPIO.add_event_detect(<PIN>, <GPIO.EDGE>, callback=<some callback function>, bouncetime=<int>)
以获得 while true
在同一脚本中循环到 运行 此脚本 "endless" 以便处理回调例程?
让我们更清楚一点。我的脚本应该是这样的:
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-Pin 的优势的文章。在我看来,这个 while true:
循环与在 Pin 图上轮询几乎一样。
我曾经在 Java 开发过。在那里你定义中断 handler/listener 然后在世界另一端的某个地方你可以处理事件。我认为这在 Python 中行不通,对吧?
我试了一下,结果是使用GPIO.add_event_detect()
命令在脚本中有一个while True
循环是绝对必要的。否则脚本就结束了,后台没有事件侦听器 运行ning(如我所料)。显然这个循环对系统资源的需求是很低的。
这个脚本将是我在 GPIO 接口上发生的每个中断的侦听器,因此我假设我必须在我的 Raspberry Pi 启动期间启动它并让它一直 运行。
如果有人建议如何 "fire and forget" 并在 Python(3) 中吸引听众,我们将不胜感激。
我在网上阅读了一些 GPIO 中断文档,例如 this,还有一个问题留给我:需要在 python 脚本中使用 GPIO.add_event_detect(<PIN>, <GPIO.EDGE>, callback=<some callback function>, bouncetime=<int>)
以获得 while true
在同一脚本中循环到 运行 此脚本 "endless" 以便处理回调例程?
让我们更清楚一点。我的脚本应该是这样的:
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-Pin 的优势的文章。在我看来,这个 while true:
循环与在 Pin 图上轮询几乎一样。
我曾经在 Java 开发过。在那里你定义中断 handler/listener 然后在世界另一端的某个地方你可以处理事件。我认为这在 Python 中行不通,对吧?
我试了一下,结果是使用GPIO.add_event_detect()
命令在脚本中有一个while True
循环是绝对必要的。否则脚本就结束了,后台没有事件侦听器 运行ning(如我所料)。显然这个循环对系统资源的需求是很低的。
这个脚本将是我在 GPIO 接口上发生的每个中断的侦听器,因此我假设我必须在我的 Raspberry Pi 启动期间启动它并让它一直 运行。
如果有人建议如何 "fire and forget" 并在 Python(3) 中吸引听众,我们将不胜感激。