diff --git a/.vscode/settings.json b/.vscode/settings.json index 7dfa96f..977a329 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -52,6 +52,7 @@ "fluxsd.h": "c", "bitset": "c", "algorithm": "c", - "format": "c" + "format": "c", + "cstdint": "c" } } diff --git a/components/FluxProtocol/FluxProtocol.c b/components/FluxProtocol/FluxProtocol.c index 289e129..04a984a 100644 --- a/components/FluxProtocol/FluxProtocol.c +++ b/components/FluxProtocol/FluxProtocol.c @@ -26,9 +26,13 @@ enum Bs_test_Stage currentTestStage = BS_STAGE_NONE; /* 应用 event_homePage 中的测试状态显示变量 */ extern bool is_bs_test_ing; +extern bool is_nom_test_ing; + +extern void comulate_time_set(void); /* 定义控制LED小灯的任务句柄 */ TaskHandle_t bs_stateLED_task_handle; +TaskHandle_t nom_stateLED_task_handle; /* * @brief 拼接测试过程中用于展示的字符串 @@ -50,6 +54,45 @@ char *test_info[] = {"Time setting sent successfully!!",\ /* 导出协议数据结构体 */ struct FluxProtocol fluxProtocol; +/** + * @brief 新建用于进行带常规测试的任务函数 + * + * @param[in] arg not used + * + */ +void nom_test_task(void* arg) +{ + float time = 0; + + while (1) + { + /* 开始测试前 下发积分时间,确保测试时间正确 */ + comulate_time_set(); + time = (float)lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); + flux_test_time_set(time); + + lv_label_set_text(ui_pageHome_labelStartTest,"Cancel Test Nom"); + lv_bar_set_value(ui_pageHome_barNomTest,0,LV_ANIM_ON); + + /* 恢复LED显示任务 */ + vTaskResume(nom_stateLED_task_handle); + + /* 测试开始 */ + + vTaskDelay(time*1000 / portTICK_PERIOD_MS); + + /* 测试结束 */ + lv_label_set_text(ui_pageHome_labelStartTest,"Start Test Nom"); + is_nom_test_ing = false; + /* 挂起LED显示任务 */ + NOM_STATE_LED_TASK_SUSPEND; + + lv_bar_set_value(ui_pageHome_barNomTest,0,LV_ANIM_ON); + vTaskDelete(NULL); + } + +} + /** * @brief 新建用于进行带BS测试的任务函数 * @@ -150,6 +193,44 @@ void bs_test_led_task(void* arg) } } +/** + * @brief 测试状态显示线程 + * + * 设置一个LED小灯,测试的时候bling bling 闪 + * + * @param[in] arg not used + * + */ +void nom_test_led_task(void* arg) +{ + int32_t time_all = 0; + + int32_t bar_plus = 0; + int32_t current_bar_value = 0; + + while(1) + { + vTaskDelay(NOM_LED_BLINK_INTERVAL_MS / portTICK_PERIOD_MS); + lv_obj_set_style_bg_color(ui_pageHome_panelNomTest,lv_color_hex(0x00FF00),LV_PART_MAIN); + + vTaskDelay(NOM_LED_BLINK_INTERVAL_MS / portTICK_PERIOD_MS); + lv_obj_set_style_bg_color(ui_pageHome_panelNomTest,lv_color_hex(0xFFFFFF),LV_PART_MAIN); + + /* 获取总的测试时间 */ + time_all = lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); + + /* 获取每次需要累加的值*/ + bar_plus = lv_bar_get_max_value(ui_pageHome_barNomTest) / time_all; + + /* 获取当前的进度条值*/ + current_bar_value = lv_bar_get_value(ui_pageHome_barNomTest); + if (current_bar_value + bar_plus < lv_bar_get_max_value(ui_pageHome_barNomTest)) + { + lv_bar_set_value(ui_pageHome_barNomTest,current_bar_value+bar_plus,LV_ANIM_ON); + } + } +} + /** * @brief 向流量计下发测试时间 * diff --git a/components/FluxProtocol/FluxProtocol.h b/components/FluxProtocol/FluxProtocol.h index 62073b8..3e846d6 100644 --- a/components/FluxProtocol/FluxProtocol.h +++ b/components/FluxProtocol/FluxProtocol.h @@ -41,9 +41,11 @@ extern char *test_info[]; /* 导出LED小灯控制句柄 */ extern TaskHandle_t bs_stateLED_task_handle; +extern TaskHandle_t nom_stateLED_task_handle; /* 定义LED小灯闪烁时间间隔 ms */ #define BS_LED_BLINK_INTERVAL_MS 500 +#define NOM_LED_BLINK_INTERVAL_MS 500 /* 定义枚举用于标记当前测试阶段 */ typedef enum Bs_test_Stage{ @@ -117,10 +119,16 @@ typedef struct FluxCommand lv_label_set_text(ui_pageHome_LabelRate35Result, "0");\ lv_label_set_text(ui_pageHome_LabelRate40Result, "0"); +#define NOM_ALL_RESULT_CLEAR lv_label_set_text(ui_pageHome_labelTestResult, "0"); + /* 创建led任务挂起宏函数 */ #define BS_STATE_LED_TASK_SUSPEND vTaskSuspend(bs_stateLED_task_handle);\ lv_obj_set_style_bg_color(ui_pageHome_panelBSLEDing,lv_color_hex(0xFFFFFF),LV_PART_MAIN); + /* 创建常规测试led任务挂起宏函数 */ +#define NOM_STATE_LED_TASK_SUSPEND vTaskSuspend(nom_stateLED_task_handle);\ + lv_obj_set_style_bg_color(ui_pageHome_panelNomTest,lv_color_hex(0xFFFFFF),LV_PART_MAIN); + /* BS测试过程中快速显示测试状态 */ #define BS_HOMEPAGE_SHOW(x) lv_label_set_text(ui_pageHome_labelBSInfo,x); @@ -174,6 +182,24 @@ void flux_test_start(void); */ void flux_test_result_get(void); +/** + * @brief 测试状态显示线程 + * + * 设置一个LED小灯,测试的时候bling bling 闪 + * + * @param[in] arg not used + * + */ +void nom_test_led_task(void* arg); + +/** + * @brief 新建用于进行带常规测试的任务函数 + * + * @param[in] arg not used + * + */ +void nom_test_task(void* arg); + #ifdef __cplusplus } /*extern "C"*/ #endif diff --git a/components/FluxUI/screens/ui_pageHome.c b/components/FluxUI/screens/ui_pageHome.c index e257fa9..bb53812 100644 --- a/components/FluxUI/screens/ui_pageHome.c +++ b/components/FluxUI/screens/ui_pageHome.c @@ -272,7 +272,7 @@ void ui_pageHome_screen_init(void) lv_obj_set_width(ui_pageHome_panelCenter, 297); lv_obj_set_height(ui_pageHome_panelCenter, 430); lv_obj_set_x(ui_pageHome_panelCenter, 0); - lv_obj_set_y(ui_pageHome_panelCenter, -1); + lv_obj_set_y(ui_pageHome_panelCenter, 1); lv_obj_set_align(ui_pageHome_panelCenter, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelCenter, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_radius(ui_pageHome_panelCenter, 15, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -791,17 +791,17 @@ void ui_pageHome_screen_init(void) ui_pageHome_panelLeft = lv_obj_create(ui_pageHome_panelBody); lv_obj_set_width(ui_pageHome_panelLeft, 297); lv_obj_set_height(ui_pageHome_panelLeft, 430); - lv_obj_set_x(ui_pageHome_panelLeft, -313); - lv_obj_set_y(ui_pageHome_panelLeft, -2); + lv_obj_set_x(ui_pageHome_panelLeft, -320); + lv_obj_set_y(ui_pageHome_panelLeft, 0); lv_obj_set_align(ui_pageHome_panelLeft, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelLeft, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_radius(ui_pageHome_panelLeft, 15, LV_PART_MAIN | LV_STATE_DEFAULT); ui_pageHome_panelNominal = lv_obj_create(ui_pageHome_panelLeft); lv_obj_set_width(ui_pageHome_panelNominal, 266); - lv_obj_set_height(ui_pageHome_panelNominal, 50); + lv_obj_set_height(ui_pageHome_panelNominal, 47); lv_obj_set_x(ui_pageHome_panelNominal, 0); - lv_obj_set_y(ui_pageHome_panelNominal, -118); + lv_obj_set_y(ui_pageHome_panelNominal, -134); lv_obj_set_align(ui_pageHome_panelNominal, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelNominal, LV_OBJ_FLAG_SCROLLABLE); /// Flags @@ -848,37 +848,35 @@ void ui_pageHome_screen_init(void) ui_pageHome_panelRate = lv_obj_create(ui_pageHome_panelLeft); lv_obj_set_width(ui_pageHome_panelRate, 266); - lv_obj_set_height(ui_pageHome_panelRate, 100); + lv_obj_set_height(ui_pageHome_panelRate, 79); lv_obj_set_x(ui_pageHome_panelRate, 0); - lv_obj_set_y(ui_pageHome_panelRate, -33); + lv_obj_set_y(ui_pageHome_panelRate, -66); lv_obj_set_align(ui_pageHome_panelRate, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelRate, LV_OBJ_FLAG_SCROLLABLE); /// Flags ui_pageHome_labelstr4 = lv_label_create(ui_pageHome_panelRate); lv_obj_set_width(ui_pageHome_labelstr4, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelstr4, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelstr4, -49); - lv_obj_set_y(ui_pageHome_labelstr4, -23); + lv_obj_set_x(ui_pageHome_labelstr4, -71); + lv_obj_set_y(ui_pageHome_labelstr4, -20); lv_obj_set_align(ui_pageHome_labelstr4, LV_ALIGN_CENTER); - lv_label_set_text(ui_pageHome_labelstr4, "呼吸频率BPM"); + lv_label_set_text(ui_pageHome_labelstr4, "频率BPM"); lv_obj_set_style_text_font(ui_pageHome_labelstr4, &ui_font_homeText, LV_PART_MAIN | LV_STATE_DEFAULT); ui_pageHome_spinboxRate = lv_spinbox_create(ui_pageHome_panelRate); - lv_obj_set_width(ui_pageHome_spinboxRate, 70); - lv_obj_set_height(ui_pageHome_spinboxRate, 40); - lv_obj_set_x(ui_pageHome_spinboxRate, 80); - lv_obj_set_y(ui_pageHome_spinboxRate, -23); + lv_obj_set_width(ui_pageHome_spinboxRate, 45); + lv_obj_set_height(ui_pageHome_spinboxRate, 35); + lv_obj_set_x(ui_pageHome_spinboxRate, 0); + lv_obj_set_y(ui_pageHome_spinboxRate, 14); lv_obj_set_align(ui_pageHome_spinboxRate, LV_ALIGN_CENTER); - lv_spinbox_set_digit_format(ui_pageHome_spinboxRate, 3, 0); + lv_spinbox_set_digit_format(ui_pageHome_spinboxRate, 2, 0); lv_spinbox_set_range(ui_pageHome_spinboxRate, 15, 40); lv_spinbox_set_cursor_pos(ui_pageHome_spinboxRate, 1 - 1); lv_spinbox_set_value(ui_pageHome_spinboxRate, 15); lv_obj_set_style_pad_left(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_right(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_pad_top(ui_pageHome_spinboxRate, 7, LV_PART_MAIN | LV_STATE_DEFAULT); + lv_obj_set_style_pad_top(ui_pageHome_spinboxRate, 10, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_pad_row(ui_pageHome_spinboxRate, 10, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_pad_column(ui_pageHome_spinboxRate, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_align(ui_pageHome_spinboxRate, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_pageHome_spinboxRate, &ui_font_homePanelLabel, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -890,8 +888,8 @@ void ui_pageHome_screen_init(void) ui_pageHome_buttonRateMinus = lv_btn_create(ui_pageHome_panelRate); lv_obj_set_width(ui_pageHome_buttonRateMinus, 100); lv_obj_set_height(ui_pageHome_buttonRateMinus, 37); - lv_obj_set_x(ui_pageHome_buttonRateMinus, -68); - lv_obj_set_y(ui_pageHome_buttonRateMinus, 19); + lv_obj_set_x(ui_pageHome_buttonRateMinus, -78); + lv_obj_set_y(ui_pageHome_buttonRateMinus, 14); lv_obj_set_align(ui_pageHome_buttonRateMinus, LV_ALIGN_CENTER); ui_pageHome_labelRateMinus = lv_label_create(ui_pageHome_buttonRateMinus); @@ -906,8 +904,8 @@ void ui_pageHome_screen_init(void) ui_pageHome_buttonRatePlus = lv_btn_create(ui_pageHome_panelRate); lv_obj_set_width(ui_pageHome_buttonRatePlus, 100); lv_obj_set_height(ui_pageHome_buttonRatePlus, 37); - lv_obj_set_x(ui_pageHome_buttonRatePlus, 57); - lv_obj_set_y(ui_pageHome_buttonRatePlus, 19); + lv_obj_set_x(ui_pageHome_buttonRatePlus, 78); + lv_obj_set_y(ui_pageHome_buttonRatePlus, 14); lv_obj_set_align(ui_pageHome_buttonRatePlus, LV_ALIGN_CENTER); ui_pageHome_labelRatePlus = lv_label_create(ui_pageHome_buttonRatePlus); @@ -921,9 +919,9 @@ void ui_pageHome_screen_init(void) ui_pageHome_panelResult = lv_obj_create(ui_pageHome_panelLeft); lv_obj_set_width(ui_pageHome_panelResult, 266); - lv_obj_set_height(ui_pageHome_panelResult, 50); + lv_obj_set_height(ui_pageHome_panelResult, 42); lv_obj_set_x(ui_pageHome_panelResult, 1); - lv_obj_set_y(ui_pageHome_panelResult, -178); + lv_obj_set_y(ui_pageHome_panelResult, -184); lv_obj_set_align(ui_pageHome_panelResult, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelResult, LV_OBJ_FLAG_SCROLLABLE); /// Flags @@ -948,17 +946,17 @@ void ui_pageHome_screen_init(void) ui_pageHome_panelStage = lv_obj_create(ui_pageHome_panelLeft); lv_obj_set_width(ui_pageHome_panelStage, 266); - lv_obj_set_height(ui_pageHome_panelStage, 80); - lv_obj_set_x(ui_pageHome_panelStage, 0); - lv_obj_set_y(ui_pageHome_panelStage, 64); + lv_obj_set_height(ui_pageHome_panelStage, 83); + lv_obj_set_x(ui_pageHome_panelStage, -1); + lv_obj_set_y(ui_pageHome_panelStage, 24); lv_obj_set_align(ui_pageHome_panelStage, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelStage, LV_OBJ_FLAG_SCROLLABLE); /// Flags ui_pageHome_buttonMinus = lv_btn_create(ui_pageHome_panelStage); - lv_obj_set_width(ui_pageHome_buttonMinus, 94); + lv_obj_set_width(ui_pageHome_buttonMinus, 100); lv_obj_set_height(ui_pageHome_buttonMinus, 37); - lv_obj_set_x(ui_pageHome_buttonMinus, -75); - lv_obj_set_y(ui_pageHome_buttonMinus, 14); + lv_obj_set_x(ui_pageHome_buttonMinus, -79); + lv_obj_set_y(ui_pageHome_buttonMinus, 18); lv_obj_set_align(ui_pageHome_buttonMinus, LV_ALIGN_CENTER); lv_obj_set_style_text_color(ui_pageHome_buttonMinus, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui_pageHome_buttonMinus, 255, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -977,8 +975,8 @@ void ui_pageHome_screen_init(void) ui_pageHome_buttonAdd = lv_btn_create(ui_pageHome_panelStage); lv_obj_set_width(ui_pageHome_buttonAdd, 100); lv_obj_set_height(ui_pageHome_buttonAdd, 37); - lv_obj_set_x(ui_pageHome_buttonAdd, 71); - lv_obj_set_y(ui_pageHome_buttonAdd, 14); + lv_obj_set_x(ui_pageHome_buttonAdd, 79); + lv_obj_set_y(ui_pageHome_buttonAdd, 18); lv_obj_set_align(ui_pageHome_buttonAdd, LV_ALIGN_CENTER); lv_obj_set_style_text_color(ui_pageHome_buttonAdd, lv_color_hex(0x050000), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui_pageHome_buttonAdd, 255, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -997,17 +995,17 @@ void ui_pageHome_screen_init(void) ui_pageHome_labelstr6 = lv_label_create(ui_pageHome_panelStage); lv_obj_set_width(ui_pageHome_labelstr6, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelstr6, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelstr6, -67); - lv_obj_set_y(ui_pageHome_labelstr6, -21); + lv_obj_set_x(ui_pageHome_labelstr6, -75); + lv_obj_set_y(ui_pageHome_labelstr6, -20); lv_obj_set_align(ui_pageHome_labelstr6, LV_ALIGN_CENTER); - lv_label_set_text(ui_pageHome_labelstr6, "当前挡位"); + lv_label_set_text(ui_pageHome_labelstr6, "测试挡位"); lv_obj_set_style_text_font(ui_pageHome_labelstr6, &ui_font_homeText, LV_PART_MAIN | LV_STATE_DEFAULT); ui_pageHome_spinboxStage = lv_spinbox_create(ui_pageHome_panelStage); lv_obj_set_width(ui_pageHome_spinboxStage, 40); - lv_obj_set_height(ui_pageHome_spinboxStage, 40); - lv_obj_set_x(ui_pageHome_spinboxStage, -2); - lv_obj_set_y(ui_pageHome_spinboxStage, 15); + lv_obj_set_height(ui_pageHome_spinboxStage, 35); + lv_obj_set_x(ui_pageHome_spinboxStage, 0); + lv_obj_set_y(ui_pageHome_spinboxStage, 18); lv_obj_set_align(ui_pageHome_spinboxStage, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_spinboxStage, LV_OBJ_FLAG_CLICKABLE); /// Flags lv_spinbox_set_digit_format(ui_pageHome_spinboxStage, 1, 1); @@ -1028,29 +1026,37 @@ void ui_pageHome_screen_init(void) lv_obj_set_style_text_color(ui_pageHome_spinboxStage, lv_color_hex(0x030000), LV_PART_CURSOR | LV_STATE_DEFAULT); lv_obj_set_style_text_opa(ui_pageHome_spinboxStage, 255, LV_PART_CURSOR | LV_STATE_DEFAULT); - ui_pageHome_labelstr1 = lv_label_create(ui_pageHome_panelLeft); + ui_pageHome_Panel8 = lv_obj_create(ui_pageHome_panelLeft); + lv_obj_set_width(ui_pageHome_Panel8, 266); + lv_obj_set_height(ui_pageHome_Panel8, 40); + lv_obj_set_x(ui_pageHome_Panel8, 0); + lv_obj_set_y(ui_pageHome_Panel8, 122); + lv_obj_set_align(ui_pageHome_Panel8, LV_ALIGN_CENTER); + lv_obj_clear_flag(ui_pageHome_Panel8, LV_OBJ_FLAG_SCROLLABLE); /// Flags + + ui_pageHome_labelstr1 = lv_label_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_labelstr1, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelstr1, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelstr1, -98); - lv_obj_set_y(ui_pageHome_labelstr1, 122); + lv_obj_set_x(ui_pageHome_labelstr1, -91); + lv_obj_set_y(ui_pageHome_labelstr1, 0); lv_obj_set_align(ui_pageHome_labelstr1, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelstr1, "测试结果:"); lv_obj_set_style_text_font(ui_pageHome_labelstr1, &ui_font_MiSansN, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_pageHome_labelstr2 = lv_label_create(ui_pageHome_panelLeft); + ui_pageHome_labelstr2 = lv_label_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_labelstr2, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelstr2, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelstr2, -27); - lv_obj_set_y(ui_pageHome_labelstr2, 123); + lv_obj_set_x(ui_pageHome_labelstr2, -30); + lv_obj_set_y(ui_pageHome_labelstr2, 0); lv_obj_set_align(ui_pageHome_labelstr2, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelstr2, "档"); lv_obj_set_style_text_font(ui_pageHome_labelstr2, &ui_font_MiSansN, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_pageHome_panelTestResult = lv_obj_create(ui_pageHome_panelLeft); + ui_pageHome_panelTestResult = lv_obj_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_panelTestResult, 30); lv_obj_set_height(ui_pageHome_panelTestResult, 30); - lv_obj_set_x(ui_pageHome_panelTestResult, 81); - lv_obj_set_y(ui_pageHome_panelTestResult, 122); + lv_obj_set_x(ui_pageHome_panelTestResult, 63); + lv_obj_set_y(ui_pageHome_panelTestResult, 0); lv_obj_set_align(ui_pageHome_panelTestResult, LV_ALIGN_CENTER); lv_obj_clear_flag(ui_pageHome_panelTestResult, LV_OBJ_FLAG_SCROLLABLE); /// Flags @@ -1062,38 +1068,38 @@ void ui_pageHome_screen_init(void) lv_obj_set_align(ui_pageHome_labelTestResult, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelTestResult, "x"); - ui_pageHome_labelResultStage = lv_label_create(ui_pageHome_panelLeft); + ui_pageHome_labelResultStage = lv_label_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_labelResultStage, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelResultStage, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelResultStage, -52); - lv_obj_set_y(ui_pageHome_labelResultStage, 122); + lv_obj_set_x(ui_pageHome_labelResultStage, -50); + lv_obj_set_y(ui_pageHome_labelResultStage, 0); lv_obj_set_align(ui_pageHome_labelResultStage, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelResultStage, "1"); lv_obj_set_style_text_decor(ui_pageHome_labelResultStage, LV_TEXT_DECOR_UNDERLINE, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_pageHome_labelResultRate = lv_label_create(ui_pageHome_panelLeft); + ui_pageHome_labelResultRate = lv_label_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_labelResultRate, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelResultRate, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelResultRate, -1); - lv_obj_set_y(ui_pageHome_labelResultRate, 123); + lv_obj_set_x(ui_pageHome_labelResultRate, -8); + lv_obj_set_y(ui_pageHome_labelResultRate, 1); lv_obj_set_align(ui_pageHome_labelResultRate, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelResultRate, "15"); lv_obj_set_style_text_decor(ui_pageHome_labelResultRate, LV_TEXT_DECOR_UNDERLINE, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_pageHome_labelstr3 = lv_label_create(ui_pageHome_panelLeft); + ui_pageHome_labelstr3 = lv_label_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_labelstr3, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelstr3, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelstr3, 38); - lv_obj_set_y(ui_pageHome_labelstr3, 124); + lv_obj_set_x(ui_pageHome_labelstr3, 25); + lv_obj_set_y(ui_pageHome_labelstr3, 0); lv_obj_set_align(ui_pageHome_labelstr3, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelstr3, "BPM"); lv_obj_set_style_text_font(ui_pageHome_labelstr3, &ui_font_MiSansN, LV_PART_MAIN | LV_STATE_DEFAULT); - ui_pageHome_labelResultCompare = lv_label_create(ui_pageHome_panelLeft); + ui_pageHome_labelResultCompare = lv_label_create(ui_pageHome_Panel8); lv_obj_set_width(ui_pageHome_labelResultCompare, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelResultCompare, LV_SIZE_CONTENT); /// 1 - lv_obj_set_x(ui_pageHome_labelResultCompare, 118); - lv_obj_set_y(ui_pageHome_labelResultCompare, 123); + lv_obj_set_x(ui_pageHome_labelResultCompare, 104); + lv_obj_set_y(ui_pageHome_labelResultCompare, 1); lv_obj_set_align(ui_pageHome_labelResultCompare, LV_ALIGN_CENTER); lv_label_set_text(ui_pageHome_labelResultCompare, "Low"); lv_obj_set_style_text_font(ui_pageHome_labelResultCompare, &ui_font_MiSansM, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1102,7 +1108,7 @@ void ui_pageHome_screen_init(void) lv_obj_set_width(ui_pageHome_buttonStartTest, 266); lv_obj_set_height(ui_pageHome_buttonStartTest, 61); lv_obj_set_x(ui_pageHome_buttonStartTest, 3); - lv_obj_set_y(ui_pageHome_buttonStartTest, 170); + lv_obj_set_y(ui_pageHome_buttonStartTest, 176); lv_obj_set_align(ui_pageHome_buttonStartTest, LV_ALIGN_CENTER); lv_obj_set_style_bg_color(ui_pageHome_buttonStartTest, lv_color_hex(0x4A58DD), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_pageHome_buttonStartTest, 255, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1116,6 +1122,30 @@ void ui_pageHome_screen_init(void) lv_label_set_text(ui_pageHome_labelStartTest, "开始测试"); lv_obj_set_style_text_font(ui_pageHome_labelStartTest, &ui_font_homePanelLabel, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageHome_barNomTest = lv_bar_create(ui_pageHome_panelLeft); + lv_obj_set_width(ui_pageHome_barNomTest, 150); + lv_obj_set_height(ui_pageHome_barNomTest, 10); + lv_obj_set_x(ui_pageHome_barNomTest, -3); + lv_obj_set_y(ui_pageHome_barNomTest, 86); + lv_obj_set_align(ui_pageHome_barNomTest, LV_ALIGN_CENTER); + + ui_pageHome_panelNomTest = lv_obj_create(ui_pageHome_panelLeft); + lv_obj_set_width(ui_pageHome_panelNomTest, 25); + lv_obj_set_height(ui_pageHome_panelNomTest, 25); + lv_obj_set_x(ui_pageHome_panelNomTest, 101); + lv_obj_set_y(ui_pageHome_panelNomTest, 86); + lv_obj_set_align(ui_pageHome_panelNomTest, LV_ALIGN_CENTER); + lv_obj_clear_flag(ui_pageHome_panelNomTest, LV_OBJ_FLAG_SCROLLABLE); /// Flags + + ui_pageHome_Label8 = lv_label_create(ui_pageHome_panelLeft); + lv_obj_set_width(ui_pageHome_Label8, LV_SIZE_CONTENT); /// 1 + lv_obj_set_height(ui_pageHome_Label8, LV_SIZE_CONTENT); /// 1 + lv_obj_set_x(ui_pageHome_Label8, -113); + lv_obj_set_y(ui_pageHome_Label8, 86); + lv_obj_set_align(ui_pageHome_Label8, LV_ALIGN_CENTER); + lv_label_set_text(ui_pageHome_Label8, "进度:"); + lv_obj_set_style_text_font(ui_pageHome_Label8, &ui_font_MiSansN14, LV_PART_MAIN | LV_STATE_DEFAULT); + ui_pageHome_switchWifiShow = lv_switch_create(ui_pageHome); lv_obj_set_width(ui_pageHome_switchWifiShow, 50); lv_obj_set_height(ui_pageHome_switchWifiShow, 23); diff --git a/components/FluxUI/ui.c b/components/FluxUI/ui.c index b19a35d..d84ba88 100644 --- a/components/FluxUI/ui.c +++ b/components/FluxUI/ui.c @@ -138,6 +138,7 @@ lv_obj_t * ui_pageHome_labelAdd; lv_obj_t * ui_pageHome_labelstr6; void ui_event_pageHome_spinboxStage(lv_event_t * e); lv_obj_t * ui_pageHome_spinboxStage; +lv_obj_t * ui_pageHome_Panel8; lv_obj_t * ui_pageHome_labelstr1; lv_obj_t * ui_pageHome_labelstr2; lv_obj_t * ui_pageHome_panelTestResult; @@ -149,6 +150,9 @@ lv_obj_t * ui_pageHome_labelResultCompare; void ui_event_pageHome_buttonStartTest(lv_event_t * e); lv_obj_t * ui_pageHome_buttonStartTest; lv_obj_t * ui_pageHome_labelStartTest; +lv_obj_t * ui_pageHome_barNomTest; +lv_obj_t * ui_pageHome_panelNomTest; +lv_obj_t * ui_pageHome_Label8; lv_obj_t * ui_pageHome_switchWifiShow; lv_obj_t * ui_pageHome_labelWifi; // CUSTOM VARIABLES diff --git a/components/FluxUI/ui.h b/components/FluxUI/ui.h index d7df437..9bfa165 100644 --- a/components/FluxUI/ui.h +++ b/components/FluxUI/ui.h @@ -148,6 +148,7 @@ extern lv_obj_t * ui_pageHome_labelAdd; extern lv_obj_t * ui_pageHome_labelstr6; void ui_event_pageHome_spinboxStage(lv_event_t * e); extern lv_obj_t * ui_pageHome_spinboxStage; +extern lv_obj_t * ui_pageHome_Panel8; extern lv_obj_t * ui_pageHome_labelstr1; extern lv_obj_t * ui_pageHome_labelstr2; extern lv_obj_t * ui_pageHome_panelTestResult; @@ -159,6 +160,9 @@ extern lv_obj_t * ui_pageHome_labelResultCompare; void ui_event_pageHome_buttonStartTest(lv_event_t * e); extern lv_obj_t * ui_pageHome_buttonStartTest; extern lv_obj_t * ui_pageHome_labelStartTest; +extern lv_obj_t * ui_pageHome_barNomTest; +extern lv_obj_t * ui_pageHome_panelNomTest; +extern lv_obj_t * ui_pageHome_Label8; extern lv_obj_t * ui_pageHome_switchWifiShow; extern lv_obj_t * ui_pageHome_labelWifi; // CUSTOM VARIABLES diff --git a/components/FluxUI/ui_event_homePage.c b/components/FluxUI/ui_event_homePage.c index 2541d82..447c4d2 100644 --- a/components/FluxUI/ui_event_homePage.c +++ b/components/FluxUI/ui_event_homePage.c @@ -18,11 +18,13 @@ /* 创建用于表征当前是否进行BS测试的全局变量 */ bool is_bs_test_ing = false; +bool is_nom_test_ing = false; /* 创建任务控制句柄 */ TaskHandle_t bs_test_task_handle; +TaskHandle_t nom_test_task_handle; /* 声明需要调用的静态函数 */ -static void comulate_time_set(void); +void comulate_time_set(void); /* 更新当前标准体积数据 */ static void standard_volume_refresh(void); @@ -126,7 +128,7 @@ void on_spinboxRate_valueChanged(lv_event_t * e) * 否则容易造成 死循环。 * */ -static void comulate_time_set(void) +void comulate_time_set(void) { /* 获取当前呼吸频率 */ FluxMachineData.breathRate = lv_spinbox_get_value(ui_pageHome_spinboxRate); @@ -362,9 +364,36 @@ static void standard_volume_refresh(void) */ void on_buttonStartTest_clicked(lv_event_t * e) { + /* 判断是否正在测试 */ + if(is_nom_test_ing) + { + /* 如果正在测试,按下后取消测试 */ + vTaskDelete(nom_test_task_handle); + + /* 挂起LED闪烁 */ + NOM_STATE_LED_TASK_SUSPEND; + + /* 等待开始测试 */ + is_nom_test_ing = false; + /* 清空已完成的测试结果 */ + NOM_ALL_RESULT_CLEAR; + + /* 清空进度条 */ + lv_bar_set_value(ui_pageHome_barNomTest,0,LV_ANIM_ON); + + lv_label_set_text(ui_pageHome_labelStartTest,"Start Test NOM"); + }else{ + /* 如果没有测试,按下后开始测试 */ + + /* 创建NOM测试任务 */ + xTaskCreate(nom_test_task, "nom_test_task", 1024*4, NULL, 5, &nom_test_task_handle); + + is_nom_test_ing = true; + lv_label_set_text(ui_pageHome_labelStartTest,"Cancel Test NOM"); + } + +#if 0 - /* 开始测试前 下发积分时间,确保测试时间正确 */ - comulate_time_set(); uint8_t bytes[4]; float time = (float)lv_spinbox_get_value(ui_pageFluxRead_spinboxTime); memcpy(bytes, &time, 4); @@ -406,6 +435,10 @@ void on_buttonStartTest_clicked(lv_event_t * e) /* 开始计时 */ lv_timer_enable(comulateResultReadTimer); +#endif + + + } /** @@ -434,36 +467,6 @@ static void comulate_result_read(lv_timer_t * timer) lv_label_set_text(ui_pageHome_labelStartTest,"Test Complete!"); } -/** - * @brief 带呼吸模拟器定时器响应函数 - * - * 时间到达后执行 - * 定时器响应函数,用于定时获取测试结果,并更新界面。 - * - * @param[in] timer not used - */ -static void bs_test_timer_func(lv_timer_t * timer) -{ - ESP_LOGI("bs_test_timer_func","bs_test_timer_func"); - - /* 显示测试成功 */ - lv_label_set_text(ui_pageHome_labelBSInfo,test_info[3]); - - vTaskDelay(4000/portTICK_PERIOD_MS); - lv_label_set_text(ui_pageHome_labelBSInfo,test_info[4]); - - vTaskDelay(4000/portTICK_PERIOD_MS); - lv_label_set_text(ui_pageHome_labelBSInfo,test_info[5]); - - vTaskDelay(4000/portTICK_PERIOD_MS); - lv_label_set_text(ui_pageHome_labelBSInfo,test_info[1]); - - vTaskDelay(4000/portTICK_PERIOD_MS); - lv_label_set_text(ui_pageHome_labelBSInfo,test_info[2]); - - ESP_LOGI("bs_test_timer_func","bs_test_timer_func end"); -} - /** * @brief BS界面 带BS测试 按键按下事件 * @@ -506,8 +509,6 @@ void on_buttonStartTestBS_clicked(lv_event_t * e) /* 屏幕中显示下发成功 */ lv_label_set_text(ui_pageHome_labelBSInfo,test_info[0]); - - /* 屏幕中显示下发成功 */ lv_label_set_text(ui_pageHome_labelBSInfo,test_info[1]); diff --git a/main/main.cpp b/main/main.cpp index 9537c25..61a8a15 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -106,6 +106,10 @@ extern "C" void app_main(void) 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);