/* * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: CC0-1.0 */ #include "main.h" /*包含通讯协议头文件*/ #include "FluxProtocol.h" #define PROGRESS_DELAY_TIME 500 /* 声明清空测试结果的函数 */ static void ui_bs_parm_clear(void); static void create_bs_test_result_file(void) { FILE *nm_result_f; FILE *log_f; sd_current_fileIndex_get(); /* 根据新获得的索引值创建日志文件及测试记录文件 */ /* 日志文件名:/sdcard/log[file_index].txt */ /* 测试结果文件名:/sdcard/result[file_index].csv */ /* 创建日志文件 */ sprintf(sdData.log_file_dir,"/sdcard/log%d.txt",sdData.file_index); log_f = fopen(sdData.log_file_dir, "w"); if (log_f == NULL) { ESP_LOGI("main.cpp", "Failed to open file for writing log"); } fprintf(log_f, "time_str,file,line,msg\n"); fclose(log_f); /* 创建测试结果文件 */ sprintf(sdData.test_file_dir,"/sdcard/ret%d.txt",sdData.file_index); nm_result_f = fopen(sdData.test_file_dir, "w"); if(nm_result_f == NULL) { ESP_LOGI("main.cpp", "Failed to open file for writing nm"); } /* 文件头为 时间戳、是否Nom模式、设备类型、挡位、频率、流量体积 */ fprintf(nm_result_f, "timestamp,timeStr,is_nom,device type,stage,rate,volume\n"); fclose(nm_result_f); /* 创建bs测试记录文件 */ sprintf(sdData.bs_file_dir,"/sdcard/bs%d.txt",sdData.file_index); FILE *bs_result_f = fopen(sdData.bs_file_dir, "w"); fprintf(bs_result_f, BS_RESULT_FILE_HEADER); fclose(bs_result_f); } extern "C" void app_main(void) { /*初始化SD卡*/ flux_sd_init(); //sntp_init(); /* Initialize the display interface */ initialize_display_and_touch(); #if LOG_RECORD_ENABLE create_bs_test_result_file(); #endif // Lock the mutex because LVGL APIs are not thread-safe // Need to lock the scheduler before modifying UI-related resources if (example_lvgl_lock(-1)) { /*配置LEDC进行背光亮度调节 */ example_ledc_init(); #if CONFIG_WIFI_SCAN_ENABLE /*初始化wifi扫描环境*/ wifi_scanInit(); #endif /*初始化页面元素*/ ui_init(); lv_scr_load_anim(uic_pageWelCome, LV_SCR_LOAD_ANIM_OUT_TOP, 0, 0, false); lv_bar_set_value(ui_pageWelCome_barStartProgress,5,LV_ANIM_ON); example_lvgl_unlock(); } /*开启电源 需要解锁屏幕之后*/ flux_button_init(); /* 创建用于记录测试的事件组*/ g_bs_test_event_group = xEventGroupCreate(); gpio_set_level(EXAMPLE_PIN_NUM_BK_LIGHT, EXAMPLE_LCD_BK_LIGHT_ON_LEVEL); lv_bar_set_value(ui_pageWelCome_barStartProgress,20,LV_ANIM_ON); lv_label_set_text(ui_pageWelCome_labelStartInfo,"turned on backlight 20%"); vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS); /*初始化按键*/ lv_bar_set_value(ui_pageWelCome_barStartProgress,30,LV_ANIM_ON); lv_label_set_text(ui_pageWelCome_labelStartInfo,"Release the power button 30%"); vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS); /*初始化电源管理系统*/ xTaskCreate(power_management_task, "powerTask", 4 * 1024, NULL, 2, NULL); lv_bar_set_value(ui_pageWelCome_barStartProgress,50,LV_ANIM_ON); lv_label_set_text(ui_pageWelCome_labelStartInfo,"power management system 50%"); vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS); lv_bar_set_value(ui_pageWelCome_barStartProgress,70,LV_ANIM_ON); lv_label_set_text(ui_pageWelCome_labelStartInfo,"WiFi scanning environment 70%"); vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS); /*创建串口任务*/ /*创建UART1响应任务*/ xTaskCreate(uart1_echoTask, "uart1_echo_task", 8*1024, NULL, 10, NULL); lv_bar_set_value(ui_pageWelCome_barStartProgress,90,LV_ANIM_ON); lv_label_set_text(ui_pageWelCome_labelStartInfo,"serial port task 90%"); vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS); /*创建本地时间同步任务*/ xTaskCreate(time_synic_task, "time_synic_task", 8*1024, NULL, 10, NULL); /* 创建BS测试LED闪烁任务,同时挂起 */ xTaskCreate(bs_test_led_task, "bs_test_led_task", 4 * 1024, NULL, 2, &bs_stateLED_task_handle); vTaskSuspend(bs_stateLED_task_handle); /* 创建NOM测试LED闪烁任务,同时挂起 */ xTaskCreate(nom_test_led_task, "nom_test_led_task", 4 * 1024, NULL, 2, &nom_stateLED_task_handle); vTaskSuspend(nom_stateLED_task_handle); #if 0/*暂时不支持呼吸模拟器*/ /*创建UART2响应任务*/ xTaskCreate(uart2_echoTask, "uart2_echo_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL); lv_bar_set_value(ui_pageWelCome_barStartProgress,100,LV_ANIM_ON); lv_label_set_text(ui_pageWelCome_labelStartInfo,"serial port task 100%"); vTaskDelay(PROGRESS_DELAY_TIME/portTICK_PERIOD_MS); #endif lv_scr_load_anim(ui_pageHome, LV_SCR_LOAD_ANIM_OUT_TOP, 800, 0, false); /*电源开启*/ POWER_ON; /* 修改BS主界面中显示的数据 */ ui_bs_parm_clear(); /*初始上电后需要自动触发的一些小事件来更新界面界面元素*/ lv_textarea_set_text(ui_pageFluxDebug_textAreaContent,""); /* 触发设备类型修改事件 */ lv_event_send(ui_pageSetting_dropdownDeviceType,LV_EVENT_VALUE_CHANGED,NULL); lv_event_send(ui_pageHome_DropdownTestTypeBS,LV_EVENT_VALUE_CHANGED,NULL); /* 触发挡位修改事件 */ lv_event_send(ui_pageHome_spinboxStage,LV_EVENT_VALUE_CHANGED,NULL); lv_event_send(ui_pageHome_spinboxRate,LV_EVENT_VALUE_CHANGED,NULL); /* 清除测试结果 */ lv_label_set_text(ui_pageHome_labelResultCompare,""); lv_label_set_text(ui_pageHome_labelTestResult,"-"); /* 设置亮度 */ lv_slider_set_value(ui_pageSetting_sliderLight,DEFAULT_LIGHT,LV_ANIM_OFF); lv_event_send(ui_pageSetting_sliderLight,LV_EVENT_VALUE_CHANGED,NULL); /* 设置当前信息 */ lv_label_set_text(ui_pageHome_labelBSInfo,"wait for test"); lv_label_set_text(ui_pageHome_labelstr21,"--BPM"); /* 设置测试结果为绿色 */ lv_obj_set_style_text_color(ui_pageHome_LabelRate15Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui_pageHome_LabelRate20Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui_pageHome_LabelRate25Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui_pageHome_LabelRate30Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui_pageHome_LabelRate35Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_color(ui_pageHome_LabelRate40Result, lv_color_hex(0x00FF00), LV_PART_MAIN | LV_STATE_DEFAULT); /* 设置进度条为0 */ FLUX_PROGRESS_BAR_CONTROL(0); #if LOG_RECORD_ENABLE example_write_log("main函数执行完毕",__FILE__,__LINE__); #endif } static void ui_bs_parm_clear(void) { /* 15BPM清空 */ lv_label_set_text(ui_pageHome_LabelRate15DOWN, "--.-"); lv_label_set_text(ui_pageHome_LabelRate15UP, "--.-"); lv_label_set_text(ui_pageHome_LabelRate15STD, "--.-"); lv_label_set_text(ui_pageHome_LabelRate15Result, "0"); /* 20BPM清空 */ lv_label_set_text(ui_pageHome_LabelRate20DOWN, "--.-"); lv_label_set_text(ui_pageHome_LabelRate20UP, "--.-"); lv_label_set_text(ui_pageHome_LabelRate20STD, "--.-"); lv_label_set_text(ui_pageHome_LabelRate20Result, "0"); /* 25BPM清空 */ lv_label_set_text(ui_pageHome_LabelRate25DOWN, "--.-"); lv_label_set_text(ui_pageHome_LabelRate25UP, "--.-"); lv_label_set_text(ui_pageHome_LabelRate25STD, "--.-"); lv_label_set_text(ui_pageHome_LabelRate25Result, "0"); /* 30BPM清空 */ lv_label_set_text(ui_pageHome_LabelRate30DOWN, "--.-"); lv_label_set_text(ui_pageHome_LabelRate30UP, "--.-"); lv_label_set_text(ui_pageHome_LabelRate30STD, "--.-"); lv_label_set_text(ui_pageHome_LabelRate30Result, "0"); /* 35BPM清空 */ lv_label_set_text(ui_pageHome_LabelRate35DOWN, "--.-"); lv_label_set_text(ui_pageHome_LabelRate35UP, "--.-"); lv_label_set_text(ui_pageHome_LabelRate35STD, "--.-"); lv_label_set_text(ui_pageHome_LabelRate35Result, "0"); /* 40BPM清空 */ lv_label_set_text(ui_pageHome_LabelRate40DOWN, "--.-"); lv_label_set_text(ui_pageHome_LabelRate40UP, "--.-"); lv_label_set_text(ui_pageHome_LabelRate40STD, "--.-"); lv_label_set_text(ui_pageHome_LabelRate40Result, "0"); //修改了 }