From: @CHENG <2393524978@qq.com> Date: Thu, 28 Nov 2024 08:57:39 +0000 (+0800) Subject: pulse wave display X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=634fa6322f8ed9e2707c9dbb62e401ce54a3e1c5;p=mirrors%2FASR3603_Z5.git pulse wave display --- diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c index 1b740e39..8c81d697 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c @@ -332,6 +332,10 @@ static int mmi_hengai_bp_measure_line_update(lv_obj_t * line) int temp_value = 0; unsigned int x_step_value = 0; unsigned int y_step_value = 0; + int max_value = 0; + int min_value = 0; + int mid_value = 0; + int base_value = 0; if(NULL == line) { @@ -346,7 +350,6 @@ static int mmi_hengai_bp_measure_line_update(lv_obj_t * line) temp_ptr = fr8012haq_blood_data_get(&s_current_raw_data_len); temp_len = s_current_raw_data_len - s_last_raw_data_len; - HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%s][%d]: total=%d,last=%d\n", __FUNCTION__, __LINE__, s_current_raw_data_len, s_last_raw_data_len); if(0 >= temp_len) return -2; if(BP_POINT_NUM_MAX < temp_len) @@ -354,6 +357,7 @@ static int mmi_hengai_bp_measure_line_update(lv_obj_t * line) _lv_memcpy(s_line_y_array_ptr, temp_ptr + s_last_raw_data_len, sizeof(int) * temp_len); s_last_raw_data_len = s_current_raw_data_len; +#if 0 temp_value = s_line_y_array_ptr[0]; for(i = 0; i < temp_len; i++) { @@ -383,10 +387,53 @@ static int mmi_hengai_bp_measure_line_update(lv_obj_t * line) s_line_point_array[i].y = (BP_OBJ_LINE_CONT_H / 2) - (s_line_y_array_ptr[i] / y_step_value); } } - lv_line_set_points(line, s_line_point_array, temp_len); +#else + max_value = s_line_y_array_ptr[0]; + min_value = s_line_y_array_ptr[0]; + for(i = 1; i < temp_len; i++) + { + if(max_value < s_line_y_array_ptr[i]) + max_value = s_line_y_array_ptr[i]; + + if(min_value > s_line_y_array_ptr[i]) + min_value = s_line_y_array_ptr[i]; + } + + x_step_value = BP_OBJ_LINE_CONT_W / temp_len; + y_step_value = BP_ABS(max_value - min_value) / (BP_OBJ_LINE_CONT_H - 10 * 2); + if(0 == y_step_value) + { + _lv_memset_00(s_line_point_array, sizeof(lv_point_t) * BP_POINT_NUM_MAX); + goto SET_LINE_POINT; + } + mid_value = min_value + (max_value - min_value) / 2; + if(0 > mid_value) + base_value = (BP_OBJ_LINE_CONT_H / 2) - (BP_ABS(mid_value) / y_step_value); + else + base_value = (BP_OBJ_LINE_CONT_H / 2) + (mid_value / y_step_value); + + for(i = 0; i < temp_len; i++) + { + if(0 < i) + s_line_point_array[i].x = s_line_point_array[i-1].x + x_step_value; + else + s_line_point_array[i].x = 5; + + if(0 > s_line_y_array_ptr[i]) + s_line_point_array[i].y = base_value + (BP_ABS(s_line_y_array_ptr[i]) / y_step_value); + else + s_line_point_array[i].y = base_value - (s_line_y_array_ptr[i] / y_step_value); + } +#endif + - HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%s][%d]: max=%d,len=%d,x_step=%d,y_step=%d\n", __FUNCTION__, __LINE__, - temp_value, temp_len, x_step_value, y_step_value); +SET_LINE_POINT: + lv_line_set_points(line, s_line_point_array, temp_len); + + + HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%s][%d]: total=%d,last=%d\n", __FUNCTION__, __LINE__, s_current_raw_data_len, s_last_raw_data_len); + HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%d]: max=%d,min=%d,mid=%d,len=%d,x_step=%d,y_step=%d,base=%d\n", __LINE__, + max_value, min_value, mid_value, temp_len, x_step_value, y_step_value, base_value); HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%d]: %d,%d,%d,%d,%d,%d,%d,%d,%d\n", __LINE__, s_line_y_array_ptr[0], s_line_y_array_ptr[5], diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c index 8842788f..4b4c28b4 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c @@ -2424,6 +2424,10 @@ static int mmi_factorymode_pulse_wave_test_line_update(lv_obj_t * line) int temp_value = 0; unsigned int x_step_value = 0; unsigned int y_step_value = 0; + int max_value = 0; + int min_value = 0; + int mid_value = 0; + int base_value = 0; if(NULL == line) { @@ -2445,6 +2449,7 @@ static int mmi_factorymode_pulse_wave_test_line_update(lv_obj_t * line) _lv_memcpy(s_line_y_array_ptr, temp_ptr + s_last_raw_data_len, sizeof(int) * temp_len); s_last_raw_data_len = s_current_raw_data_len; +#if 0 temp_value = s_line_y_array_ptr[0]; for(i = 0; i < temp_len; i++) { @@ -2473,8 +2478,77 @@ static int mmi_factorymode_pulse_wave_test_line_update(lv_obj_t * line) s_line_point_array[i].y = (PULSE_WAVE_LINE_CONT_H / 2) - (s_line_y_array_ptr[i] / y_step_value); } } +#else + max_value = s_line_y_array_ptr[0]; + min_value = s_line_y_array_ptr[0]; + for(i = 1; i < temp_len; i++) + { + if(max_value < s_line_y_array_ptr[i]) + max_value = s_line_y_array_ptr[i]; + + if(min_value > s_line_y_array_ptr[i]) + min_value = s_line_y_array_ptr[i]; + } + + x_step_value = PULSE_WAVE_LINE_CONT_W / temp_len; + y_step_value = PULSE_WAVE_ABS(max_value - min_value) / (PULSE_WAVE_LINE_CONT_H - 10 * 2); + if(0 == y_step_value) + { + _lv_memset_00(s_line_point_array, sizeof(lv_point_t) * PULSE_WAVE_POINT_NUM_MAX); + goto SET_LINE_POINT; + } + mid_value = min_value + (max_value - min_value) / 2; + if(0 > mid_value) + base_value = (PULSE_WAVE_LINE_CONT_H / 2) - (PULSE_WAVE_ABS(mid_value) / y_step_value); + else + base_value = (PULSE_WAVE_LINE_CONT_H / 2) + (mid_value / y_step_value); + + for(i = 0; i < temp_len; i++) + { + if(0 < i) + s_line_point_array[i].x = s_line_point_array[i-1].x + x_step_value; + else + s_line_point_array[i].x = 5; + + if(0 > s_line_y_array_ptr[i]) + s_line_point_array[i].y = base_value + (PULSE_WAVE_ABS(s_line_y_array_ptr[i]) / y_step_value); + else + s_line_point_array[i].y = base_value - (s_line_y_array_ptr[i] / y_step_value); + } +#endif + + +SET_LINE_POINT: lv_line_set_points(line, s_line_point_array, temp_len); +#if 0 + cplog_printf("[@CHENG_DEBUG][%s][%d]: total=%d,last=%d\n", __FUNCTION__, __LINE__, s_current_raw_data_len, s_last_raw_data_len); + cplog_printf("[@CHENG_DEBUG][%d]: max=%d,min=%d,mid=%d,len=%d,x_step=%d,y_step=%d,base=%d\n", __LINE__, + max_value, min_value, mid_value, temp_len, x_step_value, y_step_value, base_value); + cplog_printf("[@CHENG_DEBUG][%d]: %d,%d,%d,%d,%d,%d,%d,%d,%d\n", __LINE__, + s_line_y_array_ptr[0], + s_line_y_array_ptr[5], + s_line_y_array_ptr[10], + s_line_y_array_ptr[20], + s_line_y_array_ptr[30], + s_line_y_array_ptr[40], + s_line_y_array_ptr[50], + s_line_y_array_ptr[60], + s_line_y_array_ptr[70] + ); + cplog_printf("[@CHENG_DEBUG][%d]: %d,%d,%d,%d,%d,%d,%d,%d,%d\n", __LINE__, + s_line_point_array[0].y, + s_line_point_array[5].y, + s_line_point_array[10].y, + s_line_point_array[20].y, + s_line_point_array[30].y, + s_line_point_array[40].y, + s_line_point_array[50].y, + s_line_point_array[60].y, + s_line_point_array[70].y + ); +#endif + return 0; }