Raspberry Pi RPi.GPIO erro com o ameaçou de chamada de retorno
-
20-12-2019 - |
Pergunta
Eu estou ficando preso com o wait_for_edge função no pacote Python RPi.Eu adicionei vários eventos detecções para a queda de gpio e tudo funciona bem, contanto que as funções de retorno de chamada não contêm um comand como
os.system("mpc pause")
Em seguida, o script falha com a mensagem de erro:"RunetimeError:Erro #5 à espera de borda" Alguém sabe, que esta mensagem de erro quer dizer?Ou onde eu possa olhar para as coisas como essa?
Para ser mais específico, este código funciona:
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()
Mas esse código não:
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()
Ele trava depois de apertar o botão ligado à porta buttonstop.
Solução
Super hacky, mas logo depois o so.sistema de chamada, se você desvincular o evento e, em seguida, vincular novamente logo depois, ele parece funcionar.
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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow