我写了这段代码:
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();
}
根据我在一切正常时所做的事情(互联网连接正常且NTP服务器正常工作)。代码将转到else print
,它将从NTP服务器获取时间(发生这种情况),我的问题是它不执行serialPrinting。
此功能只在串行监视器中打印时间。函数timeFromNTP和timeFromRTC只是设置包含日历和时间的变量。
我的串行监视器打印从NTP服务器获取时间,然后它不打印任何内容。它只是从头开始,因为我已经在循环中设置了这个setTime函数。
是否可以运行serialPrinting()?当我调用setTime()时,我担心serialPrinting是否会以任何一种方式执行。
我明白了:
0
0
0
第4个NTPServer工作
从NTP获取时间
0
0
0
0
第4个NTPServer工作
从NTP获取时间
零和“第四个NTPServer工作”来自connWithNTP。
答案 0 :(得分:0)
好吧,没有办法执行serialPrinting,除非其他任何函数再次调用setTime进入循环或卡住。我有一些从这里无法看到的子功能,他们出于安全原因调用setTime(现在不需要)。所以有一个循环。没有循环或内部错误的代码无法跳过serialPrinting。