用python中的循环运行两个函数

2024-06-16 11:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个立方体板并访问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次,该功能退出)。在


Tags: 方法代码程序功能ledgpiodef按钮
2条回答

您需要使用某种并行处理来工作,以及创建一种中断正在运行的线程的方法。在

阅读threading并创建并启动两个Thread对象,每个对象对应一个方法。我要采取的总体方法是在testRunning()方法中读取一个布尔值,然后在stopButton()方法中写入它。在

if not keepRunning:
    return

并在每次调用wiringpi2.digitalWrite()之前插入它。使用带超时的notify()可以使stopButton()立即结束{}方法,而不是延迟。在

最后一个棘手的部分:记住在启动线程之后join()你的线程。在

^{pr2}$

在Python中,可以将()看作调用运算符。Process(target = stopButton()).start()调用stopButton(),等待它完成,然后将其返回值(None)传递给Process构造函数。在

请改用Process(target = stopButton).start()。在

相关问题 更多 >