pulse wave display
author@CHENG <2393524978@qq.com>
Thu, 28 Nov 2024 08:57:39 +0000 (16:57 +0800)
committer@CHENG <2393524978@qq.com>
Thu, 28 Nov 2024 08:57:39 +0000 (16:57 +0800)
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c
2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c

index 1b740e3..8c81d69 100644 (file)
@@ -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],
index 8842788..4b4c28b 100644 (file)
@@ -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;
 }