网络时间协议(Network Time Protocol,NTP)是用来使计算机时间同步化的一种协议,它可以 使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正, 与标准时间的误差小于1ms。标准时间来源于原子钟,卫星,天文台等。
之前做透明时钟的时候遇到的问题,使用NTPClient库获取网络时间和日期无法做到同步的问题,最终经过修改程序逐步改进,期间试过将时分秒修改为全局变量、变换WiFi信道、验证JSON返回值数据获取是否正确、利用程序中的看门狗来修改代码进程结构,最终都无济于事。但最终经过去除获取API的服务器解决问题。
以下是获取NTP的部分代码:
#include <NTPClient.h> //NTP库
……………………………
…………省……………
…………略……………
……………………………
NTPClient timeClient(ntpUDP, "ntp.tuna.tsinghua.edu.cn"); // NTP获取时间
……………………………
…………省……………
…………略……………
……………………………
timeClient.update();
unsigned long epochTime = timeClient.getEpochTime();
//Serial.println(epochTime);
if(flag == 1)
{
currentSec = epochTime;
flag = 0;
}
String formattedTime = timeClient.getFormattedTime();
int tm