Я пытаюсь определить, когда кнопка нажата и как долго. Я хочу использовать кнопку для "следующего" шага, инициированного пользователем, и если кнопка удерживается в течение трех секунд, я завершу программу. Однако wait_for_edge выдает ошибку времени выполнения: конфликтные события обнаружения фронта уже существуют для этого канала GPIO.

Есть ли лучшее решение? TIA, Стив

Вот код

#!/usr/bin/env python2.7  
import sys
import time
import RPi.GPIO as GPIO  

GPIO.setmode(GPIO.BCM)  
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)  


def myInterrupt(channel):  
    global buttonStatus
    start_time = time.time()
    GPIO.wait_for_edge(channel, GPIO.RISING)     
    buttonStatus = time.time() - start_time


# Setup the interrupt call when pin 26 goes low
GPIO.add_event_detect(26, GPIO.FALLING, callback=myInterrupt, bouncetime=300)  


try:  
    quit = False
    buttonStatus = 0
    while not quit:
        # Do stuff here, waiting for an interrupt.
        sys.stdout.write("\r{}".format(time.ctime()))
        sys.stdout.flush()
        time.sleep(1)

        # Did the button get pressed?
        if buttonStatus != 0:
            # Button was pressed.
            buttonStatus = 0
            print
            print "Button pressed for {} seconds".format(buttonStatus)

except KeyboardInterrupt:  
    GPIO.cleanup()       # clean up GPIO on CTRL+C exit  

GPIO.cleanup()           # clean up GPIO on normal exit  
print

0