簡體   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