Python while循环,不暂停,true时继续?

Python while loop, pause while not, continue again when true?

这是python我借的一点。它在 raspberry pi 上用门上的簧片开关监控三个销。如果门打开,它会显示 "door open"。

问题是它一直重复打开。我希望它说一次,暂停,等到门关闭并恢复监控。

import time
import RPi.GPIO as io
import subprocess
io.setmode(io.BCM)

#pir_pin = 18
door_pin = 24
door_pin2 = 4
door_pin3 = 22
#io.setup(pir_pin, io.IN)         # activate input
io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP)  # activate i$
io.setup(door_pin2, io.IN, pull_up_down=io.PUD_UP)  # activate $
io.setup(door_pin3, io.IN, pull_up_down=io.PUD_UP)  # activate $


while True:
   # if io.input(pir_pin):
    #    print("PIR ALARM!")
    if io.input(door_pin):
        print("DOOR Open!")
    if io.input(door_pin2):
        print("DOOR Open2!")
    if io.input(door_pin3):
        print("DOOR open3!")
        subprocess.call(['/usr/sipcmd-master/doording.sh'])
    time.sleep(1.9)

我尝试了底线,但显然我不能在 true 条件下使用 true 条件?

编辑:也许是我的问题的简化版本,我怎样才能让一个循环在继续之前等待变化。即在 pin = 0 时等待,在 pin = 1

时执行 X

听起来你应该故意在里面放一个无限循环来轮询正在关闭的门:

while True:
    if io.input(door_pin):
        print("DOOR Open!")
        while io.input(door_pin):
            pass # do nothing - the door is still open
    # now continue doing whatever you want after the door is closed again

我知道这并不是真正的 "pause" 应用程序,因为它在轮询循环旋转时仍会消耗资源。但我认为您对此没有意见,因为您也在轮询要打开的门。