美文网首页
ESP32 SNTP

ESP32 SNTP

作者: 昨天剩下的一杯冷茶 | 来源:发表于2019-07-31 16:54 被阅读0次

写一个简单的官方代码流程说明,如果您觉得写的好,友情帮我下载一下源代码。
https://download.csdn.net/download/qq_31806069/11457795

填入你的WIFI账号和密码
/#define EXAMPLE_WIFI_SSID "caicai"
/#define EXAMPLE_WIFI_PASS "1234567890"

1、 //初始化WIFI

initialise_wifi();

2、 等待WIFI连接成功

    //等待WIFI连接上
    ESP_LOGI(TAG, " wait wifi connect");
    xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT,
                        false, true, portMAX_DELAY);
    ESP_LOGI(TAG, " wait wifi ok");

3、 初始化SNTP

    ESP_LOGI(TAG, "Initializing SNTP");
    sntp_setoperatingmode(SNTP_OPMODE_POLL);
    //cn.pool.ntp.org
    //设置要连接的NTP服务器
    sntp_setservername(0, "pool.ntp.org");
    sntp_init();

4、 等待获取时间 成功

    while(timeinfo.tm_year != (CURRENT_YEAR - 1900))
    {
        ESP_LOGI(TAG, "Waiting for system time to be set... (%d)", retry);
        retry++;
        vTaskDelay(2000 / portTICK_PERIOD_MS);
        time(&now);
        localtime_r(&now, &timeinfo);
    }

5、 结束sntp的客户端和关闭WIFI

    sntp_stop();
    vTaskDelay(5000 / portTICK_PERIOD_MS);

    //关闭WIFI
    ESP_ERROR_CHECK( esp_wifi_stop() );

6、 将时区设置为中国标准时间

    setenv("TZ", "CST-8", 1);
    tzset();
    localtime_r(&now, &timeinfo);
    strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
    ESP_LOGI(TAG, "The current date/time in Shanghai is: %s", strftime_buf);

7、每秒打印一下时间

    while(1)
    {
        return_now = time(&now);
        localtime_r(&now, &timeinfo);
        strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
        ESP_LOGI(TAG, "The current date/time in Shanghai is: %s", strftime_buf);
        ESP_LOGI(TAG, "tick:%ld-%ld", now,return_now);



        ESP_LOGI(TAG, "y:%d,m:%d,d:%d %d:%d:%d",
            timeinfo.tm_year+1900,
            timeinfo.tm_mon, timeinfo.tm_mday,
            timeinfo.tm_hour, timeinfo.tm_min,
            timeinfo.tm_sec);



        vTaskDelay(2000 / portTICK_PERIOD_MS);

    }

效果展示:


image.png

补充:
对结构体的说明

struct tm
{
  int   tm_sec;    //秒钟
  int   tm_min;    //分钟
  int   tm_hour;    //小时
  int   tm_mday;    //日期:日,从1开始
  int   tm_mon;    //日期:月,从0开始
  int   tm_year;    //年,距离1900年的差值,默认是70
  int   tm_wday;    //星期,1对应星期一
  int   tm_yday;    //一年的过去的天数
  int   tm_isdst;    //是否为夏时制
#ifdef __TM_GMTOFF
  long  __TM_GMTOFF;
#endif
#ifdef __TM_ZONE
  const char *__TM_ZONE;
#endif
};

相关文章

网友评论

      本文标题:ESP32 SNTP

      本文链接:https://www.haomeiwen.com/subject/ljetdctx.html