在无限循环内只执行一次命令

2024-09-27 23:21:31 发布

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

我有一个raspberry pi,用来监视来自GPIO端口的输入,要做到这一点,我需要运行一个无限循环。在

当我在输入中收到LOW时,我想用subprocess.call执行一个系统命令。问题是只要输入接收到LOW,它就会执行这个命令。我试过让它只执行一次,但是我不能使它工作。在

while 1:
    if (GPIO.input(11) != GPIO.HIGH ):
         puerta_abierta = 1
         if(puerta_abierta == 1 ):
              call(["mpg123", "file.mp3"])
              puerta_abierta = 0
    else:
        puerta_abierta = 0

Tags: 端口命令inputgpioifpicallraspberry
2条回答

像这样:

puerta_abierta = 0
while 1:
    if (GPIO.input(11) != GPIO.HIGH ):
        puerta_abierta += 1
        if(puerta_abierta == 1 ):
            call(["mpg123", "file.mp3"])
    else:
        puerta_abierta = 0

你可以这样做:

called = False

while True:
    if GPIO.input(11) != GPIO.HIGH:
        if not called:
            call(["mpg123", "file.mp3"])
            called = True

您也可以跳出循环,但这可能不是您想要的:

^{pr2}$

相关问题 更多 >

    热门问题