我希望在按下开关约5秒后设置标志的状态。按下开关后,标志设置为flase,一旦按下,如果按下开关,我想继续检查5秒钟。如果不是,我需要再次检查按下开关。如果按下,再次监视它5秒钟。如果按住5秒钟,则调用另一个函数function1()
def switch():
while(flag == True):
switch=GPIO.input(1)
if (switch==0):
time.sleep(5)
function1()
Active = False
function2()
我上面写的方式是我只是睡了5秒钟,然后在5秒后检查,这不是我想要的。谁能告诉我如何执行上面提到的逻辑?
编辑:我只需要知道按下后开关是否继续按下5秒钟。如果它在那5秒内被压下,那么我再次需要检查是否再次按下开关,然后再继续5秒钟,直到开关遥控器按下5秒钟
答案 0 :(得分:0)
好吧,我认为你可以这样做的一种方法是使用计时器。这假设您在用户释放交换机时也会收到事件。导入时间库:
switch_flag = False
start_time = 0
end_time = 0
def switch():
global switch_flag, start_time
switch_flag = True
start_time = time.time()
def unswitch():
global switch_flag, start_time, end_time
switch_flag = False
end_time = time.time()
if end_time - start_time > 5:
print("5 seconds elapsed!")
python定时器有一些平台/粒度问题,但如果我们说5秒钟,我怀疑它会成为一个问题。