使用threback回调的Raspberry Pi RPi.GPIO错误

时间:2014-02-24 22:29:33

标签: python raspberry-pi gpio

我在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的按钮后崩溃。

1 个答案:

答案 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)