Python detect_event()只适用于IDE

时间:2016-03-20 12:04:03

标签: python button raspberry-pi raspbian raspberry-pi3

我正在为我的树莓PI制作一个脚本并站在问题面前。

我喜欢解释几个GPIO输入的边缘。因此,我正在使用python函数GPIO.event_detectedGPIO.add_event_detect。 这在IDE中工作正常,但如果我尝试使用Shell sudo python3 script.py的脚本,当我按下按钮时没有任何反应。

我正在用以下内容初始化GPIO:

numbtns = len(buttons)
index = 0

for index in range(numbtns):
    GPIO.setup(buttons[index], GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
    GPIO.add_event_detect(buttons[index],GPIO.RISING,bouncetime=200)`

用以下方法检查按钮:

if(GPIO.event_detected(GPIO_RADIO)):

为什么这在shell中不起作用?

编辑:这是我脚本中有趣的代码片段的汇编

import RPi.GPIO as GPIO
import time
import os
from threading import Thread


#GPIO-Belegung
GPIO_RADIO      = 18
GPIO_PREV       = 11
GPIO_NEXT       = 9
GPIO_DOWN       = 17
GPIO_UP         = 15
GPIO_SELECT     = 14
GPIO_MUSIK      = 16 
GPIO_TEMPERATUR = 4

# GPIO Konfig
GPIO.setmode(GPIO.BCM)


buttons         =[GPIO_RADIO,GPIO_PREV,GPIO_NEXT,GPIO_TEMPERATUR,GPIO_DOWN,GPIO_UP,GPIO_SELECT]

def init_gpio(buttons):
    numbtns = len(buttons)

    index = 0

    for index in range(numbtns):
        GPIO.setup(buttons[index], GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
        GPIO.add_event_detect(buttons[index],GPIO.RISING,bouncetime=200)

def main():
    ...
    init_gpio(buttons)
    ...
    while True:
        if(GPIO.event_detected(GPIO_RADIO)):
            do something...
        ....


if __name__ == '__main__':
    main()

0 个答案:

没有答案