Question

Je suis coincé avec la fonction wait_for_edge dans le paquet Python RPI . J'ai ajouté plusieurs détections d'événements pour la chute de GPIO et que tout fonctionne bien tant que les fonctions de rappel ne contiennent pas une COMANDE comme

 os.system("mpc pause") 

Ensuite, le script se bloque avec le message d'erreur: "RundetimeError: Erreur # 5 en attente de bord" Quelqu'un sait-il que ce message d'erreur veut dire?Ou où je peux chercher des choses comme ça?

Pour être spécifique, ce code fonctionne:

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()

mais ce code n'a pas:

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()

Il se bloque après avoir poussé le bouton connecté à la boutonnière du port.

Était-ce utile?

La solution

super hacky, mais juste après l'appel du système OS.System, si vous créez l'événement, puis la reculer juste après, il semble fonctionner.

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top