繁体   English   中英

代码说明

[英]Explanation of code

我写了这段代码:

void NTP::setTime() {
    connWithNTP();
    if(!timeNTPReadyToSet) {
        Serial.println("Getting time from RTC");
        timeFromRTC();
        if (year == 2000) {
            while(dhcpTest == false && timeNTPReadyToSet == false) {
                Serial.print("Kolaei apo to DHCP");
                startEthernetAndUdp();
                connWithNTP();
                timeFromNTP();
            }
        }
    }
    else {
        Serial.print("Getting time from NTP");
        timeFromNTP();
    }
    serialPrinting();
}

根据我在一切正常时所做的操作(Internet连接正常并且NTP服务器正常工作)。 代码将转到else print ,这将从NTP服务器获取时间(发生),而我的问题是它不执行serialPrinting。

此功能仅在串行监视器中打印时间。 函数timeFromNTP和timeFromRTC只是设置包含日历和时间的变量。

我的串行监视器显示从NTP服务器获取时间,然后不输出任何内容。 因为我已经在循环中设置了setTime函数,所以它只是从头开始。

是否有可能使serialPrinting()运行? 我担心serialPrinting这个函数在我调用setTime()时是否以两种方式执行。

我得到这个:

0

0

0

第四台NTPServer工作

从NTP获取时间

0

0

0

0

第四台NTPServer工作

从NTP获取时间

零和“第四个NTPServer工作”来自connWithNTP。

好吧,除非有其他函数进入循环或再次调用setTime导致停滞,否则无法执行serialPrinting。 我有一些子功能,从这里看不到这些子功能,并且出于安全原因(现在不需要)在其中调用setTime。 所以有一个循环。 这段代码没有循环或内部错误,无法跳过serialPrinting。

暂无
暂无

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

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