完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用 NodeMCU 连接 DS1307RTC 模块。在我的设备上可以在线和离线工作。如果它在线工作,使用 NTP 更新日期时间,但如果它离线工作,用户可以通过 html 界面(网络服务器)更新日期时间。
我对离线模式有问题,因为当我在“手动更新”后从 RTC 读取日期时,这是错误的,时间是正确的,但日期是错误的大约 52 年。 这是我的代码的摘录: 代码:全选// convert string to time_t (input as "07/08/2019 06:00") time_t createTimeFromString(const char *str) { TimeElements te; te.Year = CalendarYrToTm((str[6] - '0') * 1000 + (str[7] - '0') * 100 + (str[8] - '0') * 10 + (str[9] - '0')); te.Month = (str[3] - '0') * 10 + (str[2] - '0'); te.Day = (str[0] - '0') * 10 + (str[1] - '0'); te.Hour = (str[11] - '0') * 10 + (str[12] - '0'); te.Minute = (str[14] - '0') * 10 + (str[15] - '0'); te.Second = 0; return makeTime(te); } // convert string to char char* string2char(String command) { if (command.length() != 0) { char *p = const_cast(command.c_str()); return p; } } void setup() { tmElements_t tm; if (RTC.read(tm)) { setSyncProvider(RTC.get); Log(LOG_LEVEL_VERBOSE, "Datetime from RTC: " + digits2string(day()) + "/" + digits2string(month()) + "/" + year() + " " + digits2string(hour()) + ":" + digits2string(minute()) + ":" + digits2string(second())); } else { Log(LOG_LEVEL_ERROR, "RTC not found"); } } |
|
相关推荐
1个回答
|
|
RTC错误日期通常是因为RTC模块的时间设置错误或者与系统时间不匹配造成的。要解决此问题,您可以尝试以下操作:
1.使用RTC模块的自带程序,通过串口或I2C进行时间调整; 2.检查与RTC模块连接的电路是否正常,确保模块能够正确工作; 3.使用网络服务器更新RTC模块的时间信息。 如果您的系统在离线模式下读取RTC日期时出现错误,请检查您的设备时间是否正确设置。还要确保您的代码读取RTC数据的正确性,并确保正确地将日期和时间转换为相应的格式。同时,还要确保您的代码正确处理闰年和月份的长度。如果依然无法解决问题,您可以考虑尝试其他RTC模块,或联系RTC模块的制造商。 |
|
|
|
只有小组成员才能发言,加入小组>>
358 浏览 0 评论
1202 浏览 1 评论
591浏览 6评论
485浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
468浏览 5评论
467浏览 4评论
445浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 02:11 , Processed in 0.761009 second(s), Total 48, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号