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" 应用程序,因为它在轮询循环旋转时仍会消耗资源。但我认为您对此没有意见,因为您也在轮询要打开的门。
这是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" 应用程序,因为它在轮询循环旋转时仍会消耗资源。但我认为您对此没有意见,因为您也在轮询要打开的门。