diff --git a/components/FluxProtocol/FluxProtocol.c b/components/FluxProtocol/FluxProtocol.c index 71e275d..500703b 100644 --- a/components/FluxProtocol/FluxProtocol.c +++ b/components/FluxProtocol/FluxProtocol.c @@ -14,6 +14,8 @@ #include "FluxSD.h" #include "esp_log.h" +#include "math.h" + /* 定义用于存储当前工作模式的变量,默认是bs模式 */ extern bool is_test_mode_nom; @@ -93,7 +95,11 @@ void bs_test_task(void* arg) uint8_t testCount = 0; /* 清空所有事件组 */ - xEventGroupClearBits(g_bs_test_event_group,BIT0|BIT1|BIT2|BIT3|BIT4|BIT5); + xEventGroupClearBits(g_bs_test_event_group,BIT0|BIT1|BIT2|BIT3|BIT4|BIT5|BIT6); + /* + *0-5 对应15-40BPM测试结果 + *6 对应是否正在等待测试结束 + */ while(1) { @@ -117,6 +123,11 @@ void bs_test_task(void* arg) /* 等待测试结束 */ currentTestRate = (enum Bs_test_Rate)testCount; + lv_bar_set_value(ui_pageHome_BarTestProgBS,0,LV_ANIM_ON); + lv_label_set_text_fmt(ui_pageHome_labelstr21,test_rate[currentTestRate]); + xEventGroupSetBits(g_bs_test_event_group,BIT6); + + /* 开始进行延时操作 */ vTaskDelay(flux_test_time_series[testCount]*1000 / portTICK_PERIOD_MS); lv_label_set_text_fmt(ui_pageHome_labelBSInfo,"%s %s",test_rate[testCount],test_info[2]); @@ -129,6 +140,10 @@ void bs_test_task(void* arg) /* 等待2s进行结果获取 */ vTaskDelay(2000 / portTICK_PERIOD_MS); + /* 清空进度条 */ + xEventGroupClearBits(g_bs_test_event_group,BIT6); + FLUX_PROGRESS_BAR_CONTROL(0); + /* 根据测试结果确定是否需要复测 */ if (xEventGroupGetBits(g_bs_test_event_group) & g_bs_test_event_group_bits[testCount]) { @@ -160,8 +175,9 @@ void bs_test_task(void* arg) /* 任务测试完毕 删除任务 */ lv_label_set_text(ui_pageHome_labelStartTest1,"Start Test BS"); lv_label_set_text(ui_pageHome_labelBSInfo,"wait for test"); + lv_label_set_text(ui_pageHome_labelstr21,"--BPM"); is_bs_test_ing = false; - FLUX_PROGRESS_BAR_CONTROL(0); + /* 挂起LED显示任务 */ BS_STATE_LED_TASK_SUSPEND; @@ -182,6 +198,10 @@ void bs_test_task(void* arg) */ void bs_test_led_task(void* arg) { + int32_t time_all = 0; + int32_t bar_plus = 0; + int32_t current_bar_value = 0; + while(1) { vTaskDelay(BS_LED_BLINK_INTERVAL_MS / portTICK_PERIOD_MS); @@ -189,6 +209,19 @@ void bs_test_led_task(void* arg) vTaskDelay(BS_LED_BLINK_INTERVAL_MS / portTICK_PERIOD_MS); lv_obj_set_style_bg_color(ui_pageHome_panelBSLEDing,lv_color_hex(0xFFFFFF),LV_PART_MAIN); + + /* 获取总的测试时间 */ + time_all = flux_test_time_series[currentTestRate]; + + /* 获取每次需要累加的值*/ + bar_plus = ceil(lv_bar_get_max_value(ui_pageHome_BarTestProgBS) / time_all); + + /* 获取当前的进度条值*/ + current_bar_value = lv_bar_get_value(ui_pageHome_BarTestProgBS); + if((current_bar_value + bar_plus < lv_bar_get_max_value(ui_pageHome_BarTestProgBS))&&(xEventGroupGetBits(g_bs_test_event_group)&BIT6)) + { + lv_bar_set_value(ui_pageHome_BarTestProgBS,current_bar_value + bar_plus,LV_ANIM_ON); + } } } diff --git a/components/FluxUI/screens/ui_pageHome.c b/components/FluxUI/screens/ui_pageHome.c index a687ff3..804cd70 100644 --- a/components/FluxUI/screens/ui_pageHome.c +++ b/components/FluxUI/screens/ui_pageHome.c @@ -659,7 +659,7 @@ void ui_pageHome_screen_init(void) ui_pageHome_BarTestProgBS = lv_bar_create(ui_pageHome_panelResult1); lv_obj_set_width(ui_pageHome_BarTestProgBS, 164); lv_obj_set_height(ui_pageHome_BarTestProgBS, 10); - lv_obj_set_x(ui_pageHome_BarTestProgBS, -5); + lv_obj_set_x(ui_pageHome_BarTestProgBS, -7); lv_obj_set_y(ui_pageHome_BarTestProgBS, 41); lv_obj_set_align(ui_pageHome_BarTestProgBS, LV_ALIGN_CENTER); @@ -681,9 +681,9 @@ void ui_pageHome_screen_init(void) lv_obj_set_width(ui_pageHome_labelstr21, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_pageHome_labelstr21, LV_SIZE_CONTENT); /// 1 lv_obj_set_x(ui_pageHome_labelstr21, 102); - lv_obj_set_y(ui_pageHome_labelstr21, 40); + lv_obj_set_y(ui_pageHome_labelstr21, 42); lv_obj_set_align(ui_pageHome_labelstr21, LV_ALIGN_CENTER); - lv_label_set_text(ui_pageHome_labelstr21, "0%"); + lv_label_set_text(ui_pageHome_labelstr21, "15BPM"); lv_obj_set_style_text_font(ui_pageHome_labelstr21, &ui_font_MiSansN14, LV_PART_MAIN | LV_STATE_DEFAULT); ui_pageHome_labelstr7 = lv_label_create(ui_pageHome_panelResult1); diff --git a/components/FluxUI/ui_event_homePage.c b/components/FluxUI/ui_event_homePage.c index ea0017b..8453fe0 100644 --- a/components/FluxUI/ui_event_homePage.c +++ b/components/FluxUI/ui_event_homePage.c @@ -501,7 +501,7 @@ void on_buttonStartTestBS_clicked(lv_event_t * e) BS_ALL_RESULT_CLEAR; /* 清空进度条 */ lv_bar_set_value(ui_pageHome_BarTestProgBS, 0, LV_ANIM_ON); - lv_label_set_text_fmt(ui_pageHome_labelstr21,"%d%% ",0); + lv_label_set_text(ui_pageHome_labelstr21,"--BPM"); lv_label_set_text(ui_pageHome_labelStartTest1,"Start Test BS"); lv_label_set_text(ui_pageHome_labelBSInfo,"wait for test"); diff --git a/components/FluxUart/FluxUart.h b/components/FluxUart/FluxUart.h index b66c726..1ec0914 100644 --- a/components/FluxUart/FluxUart.h +++ b/components/FluxUart/FluxUart.h @@ -164,10 +164,8 @@ extern bool is_test_mode_nom; lv_label_set_text(ui_pageHome_labelTestResult,"X"); /* 定义主界面进度条显示控制函数 */ -#define FLUX_PROGRESS_BAR_CONTROL(x) \ - lv_bar_set_value(ui_pageHome_BarTestProgBS, x, LV_ANIM_ON);\ - lv_label_set_text_fmt(ui_pageHome_labelstr21,"%d%% ",x); - +#define FLUX_PROGRESS_BAR_CONTROL(x) lv_bar_set_value(ui_pageHome_BarTestProgBS, x, LV_ANIM_ON); + /** * @brief 串口1收发任务 (流量计) * diff --git a/main/main.cpp b/main/main.cpp index aa52d44..91f92bc 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -175,6 +175,7 @@ extern "C" void app_main(void) /* 设置当前信息 */ 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);