我正在运行一个立方体板并访问GPIO引脚。一个GPIO引脚有一个输出到一个LED,当运行此功能时,LED每1000毫秒打开和关闭一次:
def testRunning():
while 1:
wiringpi2.digitalWrite(pin3,HIGH)
wiringpi2.delay(1000)
wiringpi2.digitalWrite(pin3,LOW)
wiringpi2.delay(1000)
接下来,我有一个功能来监听另一个GPIO引脚上的按钮按下,当这个设置为高电平(1)时,它会导致另一个红色LED闪烁20次(我不确定这是否是最好的方法):
^{pr2}$当单独运行时,这两种方法都能正常工作。在
现在我想同时运行这两个程序,这样testRunning指示灯一直闪烁,直到按下stop按钮,红色LED闪烁,程序停止。我试过了:
^{3}$运行此代码时,stopButton被执行,并按预期等待按钮按下,但直到stoButton代码运行完毕,才会执行testRunning代码(即按下按钮,LED循环20次,该功能退出)。在
您需要使用某种并行处理来工作,以及创建一种中断正在运行的线程的方法。在
阅读threading并创建并启动两个
Thread
对象,每个对象对应一个方法。我要采取的总体方法是在testRunning()
方法中读取一个布尔值,然后在stopButton()
方法中写入它。在并在每次调用}方法,而不是延迟。在
wiringpi2.digitalWrite()
之前插入它。使用带超时的notify()
可以使stopButton()
立即结束{最后一个棘手的部分:记住在启动线程之后
^{pr2}$join()
你的线程。在在Python中,可以将
()
看作调用运算符。Process(target = stopButton()).start()
调用stopButton()
,等待它完成,然后将其返回值(None
)传递给Process
构造函数。在请改用
Process(target = stopButton).start()
。在相关问题 更多 >
编程相关推荐