而python中的条件不满足

而python中的条件不满足,python,loops,raspberry-pi,gpio,Python,Loops,Raspberry Pi,Gpio,嗯,我正在尝试开发一个家庭报警器,它根据从PIR模块(使用raspberry pi及其GPIO)收到的反馈进行拍照 问题如下。当触发PIr时,需要5张照片,然后转到一个功能,该功能在接下来的5秒钟内或直到再次触发时,仍在检查另一个触发器 只有在5秒过去(time.time()

嗯,我正在尝试开发一个家庭报警器,它根据从PIR模块(使用raspberry pi及其GPIO)收到的反馈进行拍照

问题如下。当触发PIr时,需要5张照片,然后转到一个功能,该功能在接下来的5秒钟内或直到再次触发时,仍在检查另一个触发器

只有在5秒过去(time.time() 我遇到问题的代码块:

#secs is received as a parameter (let's say the integer 5)

while time.time() < start + secs or not Current_State==True:
    Current_State = GPIO.input(GPIO_PIR)
    if Current_State==1:
        takePics(3)
#secs作为参数接收(假设为整数5)
而time.time()
问题:当我设置此条件时(没有OR):

while time.time() < start + secs:
     #CODE
while time.time()
这个脚本看起来很正常:如果5秒钟过去了,它就会消失。但是如果我向while条件添加(*或不是Current_State==True*),它就不会出现在第一个条件中,因为我在每个循环中显示time.time()和start+secs的比较,我看到第一个比第二个大,并且仍然继续执行while

所以我还在开发代码,但代码或多或少是这样的。如果以下代码没有很好地总结:

#导入所需的Python库
#这里我定义了GPIO
#照片尺寸和旋转
#全局变量
当前状态=0
上一个_状态=0
def takePics(NPIC):
#我在这里拍照
def重新检查:
全局当前状态,警报
警报=0
开始=时间。时间()
当前状态=0
而time.time()检测到运动!”
以前的状态=1
警报=1
#sendMail()
开关灯()#使用继电器打开灯
笔记(5)
当警报==1时:
复查(4)#如果在复查中检测到移动,我们将再次检查
如果名称=“\uuuuu main\uuuuuuuu”:
main()

更改为
。可选地,考虑简化< <代码>不是CurrnTySt==Trase<代码> >代码> CurrutyStand不是真的< /代码>或只是< >代码>不是CurrnTySturt
while time.time() < start + secs and Current_State is not True:
    Current_State = GPIO.input(GPIO_PIR)
    if Current_State==1:
        takePics(3)
而time.time()

这将循环,直到
secs
秒过去,或者当前_状态停止为真。诀窍在于,while只在其条件为false时停止<代码>或
仅当两个条件都为假时才为假,
如果两个条件都为假时才为假。

不为真
好一点!=是的
@Paco我同意,这是一种更具python风格的方式。我的天啊,我唯一认为我是对的就是手术室。。。但是没关系,我想我没有考虑太多的情况,确切地说你是对的,或者是错的,我需要一个医生,不要为此痛打自己。当我真的陷入困境时,问题似乎总是在我确信不可能的地方。
while time.time() < start + secs and Current_State is not True:
    Current_State = GPIO.input(GPIO_PIR)
    if Current_State==1:
        takePics(3)