首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Micropython:从启动/程序启动开始就有时间

Micropython:从启动/程序启动开始就有时间
EN

Stack Overflow用户
提问于 2022-07-07 08:49:27
回答 2查看 226关注 0票数 0

虽然我从高中开始就一直在编写程序(对你们中的一些人来说,这确实是个老派),但我对MicroPython还是很陌生的。

我知道这个问题可能已经在其他地方得到了答案,但是在我的搜索中没有找到合适的MicroPython解决方案(解决方案通常是Arduino或完整的Python)。

当前设备和固件:

通尼IDE

ESP32 Lilygo TTGO T显示器

这种型号有一个显示和电池充电器/监测电路在船上(读取它是另一回事)-从Aliexpress。

Lilygo的MicroPython文档是不存在的。

MicroPython v1.18-128-g2ea21abae-脏在2022-02-12

包括TTGO T显示驱动程序,来自github的russhughes版本

除了一个回收的扁平锂电池和使用USB连接,没有添加其他设备。

固件中没有日期时间模块(因此没有datetime.datetime.now()选项)

utime似乎在使用计算机上的时间(!!)要在Thonny中使用时间值(8个元素元组),而不是从ESP32中报告时间值(元组都应该从0开始)。忘记使用help('object‘),它将这个术语作为一个字符串来处理,并报告您可以执行的所有严格操作(help(’模块‘)是唯一有效的方法,否则"object term of str") <- -我尝试过使用和不带引号。

我想获得独立的正常运行时间,因为ESP32开始运行MicroPython程序(即0秒的起点),这样我就可以计时电池的持续时间--我似乎找不到可靠的编码来读取电池充电(似乎没有两个人完全同意一种方法,似乎对准确性进行了很好的讨论,主要是使用Arduino/C代码)。Lilygo的Arduino/C电池代码隐藏在他们的演示固件中--无论是从github还是从github运来的,都是可以闪现的,所以没有翻译(至少对我来说是这样)。

我希望在tft显示器、串行监视器上显示正常运行时间,并每分钟将其保存到一个文件中,以便在下次启动时检索它。主程序是一个The服务器(修改后的codemee )。一旦我有了一个像样的平均时间,我可以用它作为一个安全的关闭时间。

如果有可转换版本的datetime.py (udatetime.py?)我可以安装本地文件系统并导入,我认为这将是最好的选择,但任何让我有时间正常运行的选项都是受欢迎的。

EN

回答 2

Stack Overflow用户

发布于 2022-07-08 20:22:27

@nek毛细管:当我在Thonny运行的时候使用utime时,所报告的元组是基于我的计算机中的时间(当天的信息是处理时间)

正如我前面所说的,我对MicroPython非常陌生。我不知道machine.RTC的事。

在我尝试过的几个固件(“MicroPython”和包含各种驱动程序的变体)上,help()是非常无用的。help(‘模块’)列出了模块,但是help(‘模块名’)被视为询问字符串,因此没有提供有关模块的信息。如果没有引号,它将生成一个错误。

感谢你的链接,我补充说

进口机

rtc = machine.RTC()

打印(rtc.datetime())

它可以工作(报告1st 32相对于2000年1月1日的时间),但是rtc.now()会生成一个错误。

打印(rtc.now())

AttributeError:'RTC‘对象没有属性'now’

这是一个开始,谢谢你。

注意:在重复重新运行/重新启动后,信息返回ESP32和PC之间的触发器(有时从(2000,1,1),其他(2022,7,8)开始,直到今天)。因此,作为一个独立的,它应该只是ESP32 32的日期时间信息,因为它不能访问计算机的数据。)

time.time()也是可用的。

现在,要了解如何在没有sched、线程和其他有用的完整Python模块的情况下每分钟调用写文件函数。

票数 0
EN

Stack Overflow用户

发布于 2022-07-08 22:30:53

正常运行时间计时器的简单解决方案

代码语言:javascript
复制
from machine import Timer  
import time  

timeInit = time.time()  

def printTime(self):  
    timeDiff = time.time()-timeInit  
    (minutes, seconds) = divmod(timeDiff, 60)  
    (hours, minutes) = divmod(minutes, 60)  
    (days,hours) = divmod(hours, 24)
    #what to do comes next, I serial printed it for now  
    print(str(days)+":"+f"{hours:02d}"+":"+f"{minutes:02d}"+":"+f"{seconds:02d}")  

timer=Timer(-1)  
delay = 10 #in seconds  
timer.init(period=delay*1000, mode=Timer.PERIODIC, callback=printTime)  
#default is a dummy placeholder,
#the timer callback sends a 'self' value which caused an error during testing  
printTime('default')  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72894861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档