Raspberry PI RPI.GPIO Ошибка с угрозой обратного вызова

StackOverflow https://stackoverflow.com//questions/22000515

  •  20-12-2019
  •  | 
  •  

Вопрос

Я застрял с функцией wait_for_dege в пакете Python rpi . Я добавил несколько обнаружений событий для падающего GPIO, и все работает нормально, пока функции обратного вызова содержат не то, как

 os.system("mpc pause") 
.

Затем скрипт сбивает сообщение об ошибке: «RuneTimeError: ошибка # 5 ждет к краю» Кто-нибудь знает, что это сообщение об ошибке хочет сказать?Или где я могу посмотреть такие вещи, как это?

Быть определенным этим кодом работает:

def next(channel):
    print "In next"

GPIO.add_event_detect(buttonnext,GP.FALLING,callback=next,bouncetime=200)

os.system("mpc play")

try:
    GPIO.wait_for_edge(buttonstop, GP.FALLING)
    os.system("mpc stop")
except KeyboardInterrupt:
    GPIO.cleanup()
    os.system("mpc stop")
GPIO.cleanup()
.

Но этот код не работает:

def next(channel):
    print "In next"
    os.system("mpc next")

GPIO.add_event_detect(buttonnext,GP.FALLING,callback=next,bouncetime=200)

os.system("mpc play")
try:
    GPIO.wait_for_edge(buttonstop, GP.FALLING)
    os.system("mpc stop")
except KeyboardInterrupt:
    GPIO.cleanup()
    os.system("mpc stop")
GPIO.cleanup()
.

Это падает после нажатия кнопки подключенной к кнопке порта.

Это было полезно?

Решение

Super Hacky, но сразу после вызова OS.System, если вы развиваете событие, а затем перемидите его сразу после того, как он работает.

def next(channel):
    print "In next"
    os.system("mpc next")
    GPIO.remove_event_detect(buttonnext)
    GPIO.add_event_detect(buttonnext,GP.FALLING,callback=next,bouncetime=200)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top