IF ELSE中的python秒表

我尝试在我的 python 代码中插入秒表。代码从 API 读取数据,如果值大于“3”,则将继电器切换到 ON(树莓派 3)。每 XXX 分钟读取一次。我想要打印时间继电器打开或关闭的时间。


while True:

    ts = time.time()

    st = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S') 

    .

    . 

    .

    .

    .

    .

    if highest > 3:

        print("RELAY ON")

        print st

        print # time how long it's on

        GPIO.setmode(GPIO.BOARD)

        GPIO.setup(7, GPIO.OUT)


    else:

        print("RELAY OFF")

        print st

        print # time how long it's off

        GPIO.cleanup()


    time.sleep(60)

我尝试使用此代码,但我不知道在哪里插入它。


import time


start = time.time()

time.sleep(10)

end = time.time()


total = end-start

print total

谢谢你的帮助!


繁花如伊
浏览 202回答 1
1回答

一只甜甜圈

我们只看时序逻辑。当您打开继电器时,您标记该开始时间。“开启时间”测量一直持续到您关闭继电器。然后“关闭时间”计时器启动,一直持续到您再次打开它。我怀疑您有点困惑,因为开始和停止事件位于不同的代码块中。首先,让我们测量“接力”时间。我会做一个标志relay_is_on来通知中继状态何时发生变化。当状态改变时,我们将采取行动:打印状态改变,重置标志,并标记开始或停止时间。relay_is_on = Falsewhile True:    if highest > 3:        if not relay_is_on:            # Relay is just turning on;            #   process changes            print("RELAY ON")            relay_is_on = True            relay_on_start = time.time()    else:        if relay_is_on:            # Relay is just turning off;            #   process changes            print("RELAY OFF")            relay_is_on = False            relay_on_end = time.time()            relay_on_interval = relay_on_end - relay_on_start从这里,您可以做任何需要累积或报告中继间隔的事情。此外,如果您需要类似地处理继电器关闭时间,您只需在反向逻辑中添加几行即可。你能从这里继续吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python