所以现在我有两个功能:
Def dostuff():
# do stuff 1
GPIO.add_event_detect(button,…,callback=Interrupt,…)
# do stuff 2
Def Interrupt():
# other stuff
当我运行 dostuff() 时,它会执行 1,注册中断,然后执行 2。当我在执行 2 期间按下按钮时,会调用中断,然后返回到 dostuff() 停止的地方。
我的问题是当我从中断返回时,我希望它在 dostuff() 中调用 return True ,从而提前离开函数调用。基本上作为do stuff 2的中止开关,因为它需要很长时间。
我已经尝试在中断中引发异常并在 dostuff() 中放置一个 try catch,但显然引发异常不会返回给调用者。
添加全局变量并不是一个真正的选择,除非我想在 dostuff() 中的每一行之后进行检查。
将中断调用到代码的不同部分以更改执行是可行的,但是如果我优雅地结束,它最终会返回给令人讨厌且不干净的中断调用者。
有任何想法吗?