我在Python包中遇到了wait_for_edge函数 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()
按下连接到端口buttonstop的按钮后崩溃。
答案 0 :(得分:1)
超级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)