Raspberry PI RPI.GPIO Ошибка с угрозой обратного вызова
-
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)
. Не связан с StackOverflow