Python while while循环,暂停而不是,当true时再次继续?

时间:2015-04-12 00:02:12

标签: python while-loop raspberry-pi gpio

这是我借用的一些python。它在树莓派上监控三个针脚,门上有簧片开关。如果门打开,则表示“门打开”。

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

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)

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

编辑:也许是我的问题的简化版本,如何在继续之前制作循环等待更改。即在引脚= 0时等待,当引脚= 1时执行X

1 个答案:

答案 0 :(得分:0)

听起来你应该在那里设置一个有意的无限循环来轮询关闭的门:

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

我知道这不是真的"暂停"应用程序,因为它会在轮询循环旋转时消耗资源。但是我认为你也可以这样做,因为你也开始轮询开门。