IF ELSE中的python秒表

时间:2018-11-02 16:56:21

标签: python timing

我尝试在我的python代码中插入秒表。 代码从API读取数据,如果值更大,则“ 3”将继电器切换为ON(树莓派Pi3)。每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

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

让我们只看一下时序逻辑。打开继电器时,将标记该开始时间。持续进行“打开时间”测量,直到您关闭继电器。然后,“ time off”计时器开始计时,一直持续到您再次打开它为止。

我怀疑您有点困惑,因为开始和停止事件在不同的代码块中。首先,让我们测量“接通”时间。我将创建一个标记relay_is_on来通知中继状态何时更改。 当状态更改时,我们将采取措施:打印状态更改,重置标志并标记开始或停止时间。

relay_is_on = False

while 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

在这里,您可以执行积累或报告中继间隔所需的任何操作。另外,如果您需要类似地处理延迟时间,只需在反逻辑中添加几行即可。

您可以从这里继续吗?