Raspberry pi rpi.Gpio Errore con callback minacciato
-
20-12-2019 - |
Domanda
Sto rimanendo bloccato con la funzione Wait_for_edge nel pacchetto Python RPI . Ho aggiunto più rilevamenti per eventi per la caduta di GPIO e tutto funziona bene finché le funzioni di callback non contengono un comando come
os.system("mpc pause")
.
Allora lo script si blocca con il messaggio di errore: "RunetimeError: Errore # 5 in attesa di Edge" Qualcuno sa, cosa vuole dire questo messaggio di errore?O dove posso cercare cose come questa?
Per essere specifico Questo codice funziona:
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()
.
Ma questo codice non:
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()
.
Si blocca dopo aver premuto il pulsante collegato alla porta Buttonstop.
Soluzione
Super Hacky, ma subito dopo la chiamata di OS.System, se si ottinando l'evento e poi si riavvia subito dopo, sembra funzionare.
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)
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow