为了账号安全,请及时绑定邮箱和手机立即绑定

IF ELSE中的python秒表

IF ELSE中的python秒表

繁花如伊 2021-08-05 18:06:31
我尝试在我的 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 timestart = time.time()time.sleep(10)end = time.time()total = end-startprint total谢谢你的帮助!
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

我们只看时序逻辑。当您打开继电器时,您标记该开始时间。“开启时间”测量一直持续到您关闭继电器。然后“关闭时间”计时器启动,一直持续到您再次打开它。


我怀疑您有点困惑,因为开始和停止事件位于不同的代码块中。首先,让我们测量“接力”时间。我会做一个标志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

从这里,您可以做任何需要累积或报告中继间隔的事情。此外,如果您需要类似地处理继电器关闭时间,您只需在反向逻辑中添加几行即可。


你能从这里继续吗?


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号