繁体   English   中英

如何在 ESP32 和 Arduino IDE 上设置纪元以在没有外部 RTC 和 Wifi 的情况下更新时间日期?

[英]How set epoch on ESP32 and Arduino IDE to update the timedate without external RTC and Wifi?

在我的 ESP32 上,我想获得有关没有 Wifi 连接或外部 RTC 芯片的实际时间的信息。 我从这个简单的代码开始

time_t now;
struct tm* timeinfo;

void Check_Time(void) {
  time(&now);
  timeinfo = localtime(&now);
  Serial.println(timeinfo);
}

void setup() {
  Serial.begin(115200);
}

void loop() {
  Check_Time();
  delay(1000);
}

它的工作原理是 output 是

Thu Jan  1 00:07:57 1970
Thu Jan  1 00:07:58 1970
Thu Jan  1 00:07:59 1970
Thu Jan  1 00:08:00 1970
...

它自然是从 1970 年 1 月 1 日开始的。现在我想将这次更新为实际的,但我还没有找到直接的解决方案。 我知道我可以使用mktime function 将日期转换为time_t数据(对吗?)但是我如何将它传递给系统? 我应该如何处理这个问题?

我通过使用它来工作:

#include <sys/time.h>
// ...
struct timeval tv;
tv.tv_sec = /* seconds since epoch here */;
tv.tv_usec = /* microseconds here */;
settimeofday(&tv, NULL);

用存储时间的变量替换注释。

我正在通过低功耗蓝牙更新我的时间。

这是它的工作原理:

1970 1 1 0 0 16
1970 1 1 0 0 17
1970 1 1 0 0 18
Time set
2020 12 6 22 45 32
2020 12 6 22 45 33
2020 12 6 22 45 34

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM