一段时间后执行代码而不在Python中使用sleep?

时间:2015-01-21 23:39:01

标签: python sleep lcd

我正在使用Python为LCD屏幕编写代码,我希望它显示闪烁的“按SELECT”信息,直到按下LCD上的按钮。

问题在于,当程序处于睡眠状态时,它不会注册用户按下按钮,这意味着我必须在打印消息时完全按下按钮。

如何在不使用睡眠的情况下完成此操作?

这是我使用的代码:

#lcd.is_pressed(LCD.SELECT) - checks if button is pressed
#lcd.message - prints text on LCD
#lcd.clear - removes all text from LCD

while not lcd.is_pressed(LCD.SELECT):
      lcd.message ('Press Select')
      sleep(2)
      lcd.clear()
      sleep(2)

2 个答案:

答案 0 :(得分:0)

将你的时间分成更小的片段;这会每百分之一秒检查一次按钮:

i = 0
while not lcd.is_pressed(LCD.SELECT):
    i = (i + 1) % 400
    if i == 0:
        lcd.message("Press Select")
    elif i == 200:
        lcd.clear()
    sleep(0.01)

答案 1 :(得分:0)

试试这个:

import time

delayTime=2 #In seconds
dummyVariable=is_pressed(LCD.Select)
while not dummyVariable:
    lcd.message('Press Select')
    dummyVariable=softWait(delayTime)
    lcd.clear()
    dummyVariable=softWait(delayTime)

def softWait(delayTime)
    t0 = time.time()
    t1 = time.time()
    while t0-t1<delayTime:
        dummyVariable=is_pressed(LCD.Select)
        t1=time.time()
        if dummyVariable:
            return True
    return False

在不知道is_pressed如何运作的情况下,我无法对此进行测试。但最有可能的问题是,如果is_pressed仅注册True,如果按钮当前被点击,如果按钮点击比系统返回time.time()或lcd.message()调用的时间快,则会失败。真的很快。