ESP8266 - SNTP 인터페이스를 사용하여 시간 확보
sntp_setserver 기능: IP 주소를 통해 SNTP 서버를 설정하여 최대 3개의 SNTP 서버를 설정할 수 있습니다.함수 정의:void sntp_setserver(unsigned char idx, ip_addr_t*addr) 매개 변수: unsigned char idx: SNTP 서버 번호, 최대 3개 SNTP 서버(0~2) 보유;0번은 주 서버이고 1번과 2번은 예비 서버입니다.ip_addr_t*addr:IP 주소;사용자는 합법적인 SNTP 서버가 전송되었는지 스스로 확인해야 합니다.복귀: sntp_ 없음setservername 기능: 도메인 이름을 통해 SNTP 서버를 설정합니다. 모두 최대 3개의 SNTP 서버를 설정할 수 있습니다.함수 정의:void sntp_setservername(unsignedcharidx,char*server) 매개 변수: unsignedcharidx: SNTP 서버 번호, 최대 ⽀는 3개의 SNTP 서버(0~2)를 보유합니다.0번은 주 서버이고 1번과 2번은 예비 서버입니다.char*server: 도메인 이름;사용자는 합법적인 SNTP 서버가 전송되었는지 스스로 확인해야 합니다.복귀: sntp_ 없음init 기능: SNTP 초기화 함수 정의:void sntp_init(void) 매개 변수: 반환 없음: sntp_ 없음stop 기능: SNTP 닫기 함수 정의:void sntp_stop(void) 매개 변수: 반환 없음: sntp_ 없음get_current_timestamp 기능: 현재 거리 기준 시간 조회(1970.01.01 00:00:00 GMT + 8) 시간 스탬프, 단위: 초 함수 정의: uint32 sntp_get_current_timestamp () 매개 변수: 반환 없음: 데이텀 시간 거리 스탬프 sntp_get_real_time 기능: 조회 실제 시간(GMT + 8) 함수 정의:char* sntp_get_real_time(long t) 매개 변수:long t - 기준 시간과 떨어진 시간 스탬프 반환: 실제 시간
ESP8266에서 STNP를 사용하는 것도 매우 간단합니다. 위 코드:
os_timer_t sntp_read_timer;
void ICACHE_FLASH_ATTR
sntp_read_timer_callback(void *arg)
{
uint32_t time = sntp_get_current_timestamp();
os_printf("time:%d\r
",time);
os_printf("date:%s\r
",sntp_get_real_time(time));// time sntp_get_real_time
}
void ICACHE_FLASH_ATTR
my_sntp_init(void)
{
sntp_setservername(0,"0.cn.pool.ntp.org");
sntp_setservername(1,"1.cn.pool.ntp.org");
sntp_setservername(2,"2.cn.pool.ntp.org");
sntp_init();
os_timer_disarm(&sntp_read_timer);
os_timer_setfn(&sntp_read_timer, sntp_read_timer_callback , NULL);
os_timer_arm(&sntp_read_timer,5000,1);// 5s
}
my_sntp_init 함수는 먼저 STNP 서버 3개를 설정하고 sntp_ 호출init 함수 초기화, 마지막으로 타이머를 설정합니다. 5초마다 SNTP 인터페이스에서 시간을 가져와 인쇄합니다. 인쇄 효과는 다음과 같습니다.
……
time:1461851702 date:Thu Apr 28 13:55:02 2016 time:1461851707 date:Thu Apr 28 13:55:07 2016 time:1461851712 date:Thu Apr 28 13:55:12 2016 time:1461851717 date:Thu Apr 28 13:55:17 2016 time:1461851722 date:Thu Apr 28 13:55:22 2016 ……
또한 다음 사항에 유의해야 합니다.
1. ESP8266은 네트워킹해야 합니다.
2. sntp 초기화는 일정한 시간이 있기 때문에 첫 인쇄 시 "please start sntp first!"가 나타날 수 있습니다.경고, sntp 초기화가 완료되면 정상입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ESP8266 시작GND RXD TXD(I02)는 PC와의 통신에 사용합니다. PC와의 커뮤니케이션을 위해 USB 단자와 TTL 시리얼 케이블(예: ) 등을 사용하여 연결합니다. 최초의 Flash 메모리의 내용은 비어 있습니다. 프로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.