监控标志状态几秒钟
我想监控一个标志的状态,这个标志是在按下开关后设置的,持续大约5秒钟。当开关被按下时,标志会被设置为假(false)。一旦按下开关,我想在接下来的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秒为止。
1 个回答
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秒钟,我觉得应该不会有什么问题。