/** * @file FluxTimer.c * @brief 时间同步源文件 * * 用于芯片内部时钟同步(Not Used) * * @author wang xiang en * @date 2025-04-19 * @version 版本号 * @copyright 版权声明((C)2025, YUWELL MEDTECH Co.ltd) */ #include #include "FluxTime.h" #include "ui.h" #include "esp_err.h" #include "esp_log.h" /*包含SNTP的头文件*/ #include "lwip/apps/sntp.h" #include /* 更新SD卡信息中的时间戳 */ #include "FluxSD.h" /** * @brief 时间同步函数 * * 用于时间同步操作,无网络环境无法使用。 * * @param[in] arg not used */ void time_synic_task(void *arg) { /*用来进行显示的字符串*/ char strftime_buf[64]; char time_str[64]; /*大数*/ time_t now = 0; /*时间结构体*/ struct tm timeinfo = {0}; //ESP_LOGI("SNTP..........","SNTP task start"); while (1) { /*1秒钟更新一下显示时间*/ vTaskDelay(SYSTEM_TIME_UPDATE_INTERVAL_SEC*1000 / portTICK_PERIOD_MS); time(&now); localtime_r(&now, &timeinfo); strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); lv_label_set_text_fmt(ui_pageTimeDebug_labelHearderTime,"%s",strftime_buf); //ESP_LOGI("SNTP","The current date/time in China is: %s", strftime_buf); /* 更新时间信息 */ sdData.current_time = now; //sdData.current_time_tm = timeinfo; memcpy(sdData.strftime_buf,strftime_buf,sizeof(strftime_buf)); /* 更新时间信息 */ lv_label_set_text_fmt(ui_pageHome_labelTime,"%d:%d",timeinfo.tm_hour,timeinfo.tm_min); lv_label_set_text_fmt(ui_pageTime_time,"%d:%d:%d",timeinfo.tm_hour,timeinfo.tm_min,timeinfo.tm_sec); lv_label_set_text_fmt(ui_pageTime_date,"%d-%d-%d %d",timeinfo.tm_year+1900,timeinfo.tm_mon+1,timeinfo.tm_mday,timeinfo.tm_wday); } } /** * @brief 时间获取API * * 将时间转换为字符串上交 * * @return 时间字符串提交函数 */ char* get_time_str(void) { char strftime_buf[64]; time_t now = 0; struct tm timeinfo = {0}; /* 获取时间 */ time(&now); /* 获取时间字符串 */ localtime_r(&now, &timeinfo); /* 返回时间字符串 */ strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo); return strftime_buf; }