From: p15692025051 <846603105@qq.com> Date: Thu, 28 Dec 2023 08:17:58 +0000 (+0800) Subject: 血压模组 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=ca1d14d6662985c24dee6c2647ceccc9221a950e;p=mirrors%2FASR3603_Z5.git 血压模组 --- diff --git a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c index 6ff01840..8915f4c6 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c @@ -46,7 +46,10 @@ static unsigned char is_open_FR8012HAQ = 0; //是否打开测试 static unsigned char s_FR8012HAQ_heart_rate = 0x0;//心律 static unsigned char s_FR8012HAQ_high_blood = 0x0;//血压/高压 static unsigned char s_FR8012HAQ_low_blood = 0x0;//血压/低压 -unsigned char s_FR8012HAQ_blood_data[48*2] = {0};//血压数据 +#define s_FR8012HAQ_blood_freq 81 +#define s_FR8012HAQ_blood_data_mxa_len s_FR8012HAQ_blood_freq*4*60 //60秒存的字节数大小 +int * s_FR8012HAQ_blood_data = NULL;//血压数据 +int s_FR8012HAQ_blood_data_len = 0;//接收的血压数据长度 static unsigned char s_FR8012HAQ_blood_oxygen = 0x0;//血氧 static unsigned char s_FR8012HAQ_HRV = 0x0;//hrv unsigned char s_FR8012HAQ_wear_status = 1;//佩戴状态 @@ -367,7 +370,7 @@ void fr8012haq_timer_cfg(bool en) //320ms }else { - uos_timer_start(fr8012haq_timer, MS_TO_TICKS(1000), MS_TO_TICKS(1000), fr8012haq_timerout_cb, NULL); + uos_timer_start(fr8012haq_timer, MS_TO_TICKS(150), MS_TO_TICKS(150), fr8012haq_timerout_cb, NULL); } //Helios_Timer_Start(fr8012haq_timer, 320, 1); @@ -402,7 +405,6 @@ void FR8012HAQ_test(uint32_t mode) s_FR8012HAQ_heart_rate_buff_count = 0; s_FR8012HAQ_high_blood = 0x0; s_FR8012HAQ_low_blood = 0x0; - memset(s_FR8012HAQ_blood_data,0,sizeof(s_FR8012HAQ_blood_data)); s_FR8012HAQ_HRV = 0; //s_FR8012HAQ_wear_status = 0; s_FR8012HAQ_blood_oxygen = 0x0; @@ -422,6 +424,13 @@ void FR8012HAQ_test(uint32_t mode) break; case BP_MODE: /* code */ + if(s_FR8012HAQ_blood_data ==NULL) + { + s_FR8012HAQ_blood_data = malloc(s_FR8012HAQ_blood_data_mxa_len); + memset(s_FR8012HAQ_blood_data,0,s_FR8012HAQ_blood_data_mxa_len); + } + s_FR8012HAQ_blood_data_len =0; + uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"bp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"bp\"}")); break; case WEAR_MODE: @@ -496,6 +505,7 @@ void fr8012haq_analysis_data(char *data,unsigned int len) char *tem_data = NULL; char num_buf[20] = {0}; unsigned char num_buf_len = 0; + int i = 0; /*心率*/ tem_data = strstr(data,"\"hrs_data\":\""); if(tem_data) @@ -528,13 +538,23 @@ void fr8012haq_analysis_data(char *data,unsigned int len) tem_data = strstr(data,"\"bp_data\":\""); if(tem_data) { - - unsigned char spo2 = 0; tem_data += strlen("\"bp_data\":\""); num_buf_len = find_c(tem_data,'\"'); - if(num_buf_len>sizeof(s_FR8012HAQ_blood_data)) - num_buf_len = sizeof(s_FR8012HAQ_blood_data); - memcpy(s_FR8012HAQ_blood_data,tem_data,num_buf_len); + for(i=0;i 0) { // fr8012haq_hr_bp_bo_value.hr = hr; @@ -787,10 +810,12 @@ void fr8012haq_hr_bp_bo_value_get(uint16_t *hr, uint16_t *bp_high, uint16_t *bp_ if(bo != NULL) *bo = s_FR8012HAQ_blood_oxygen; } -//获取48字节aslcc码的十六进制血压数据到blood_buf,注意:blood_buf长度要大于等于48*2字节 -void fr8012haq_blood_data_get(char *blood_buf) +//获取1分钟血压数据,总共81*60个int数组,返回数据数组,len:长度返回,当长度等于81*60时表示存够数据 +int *fr8012haq_blood_data_get(int *len) { - memcpy(blood_buf,s_FR8012HAQ_blood_data,sizeof(s_FR8012HAQ_blood_data)); + //memcpy(blood_buf,s_FR8012HAQ_blood_data,sizeof(s_FR8012HAQ_blood_data)); + *len = s_FR8012HAQ_blood_data_len; + return s_FR8012HAQ_blood_data; } void fr8012haq_hr_bp_bo_value_clear(void) @@ -799,10 +824,10 @@ void fr8012haq_hr_bp_bo_value_clear(void) s_FR8012HAQ_heart_rate_buff_count = 0; s_FR8012HAQ_high_blood = 0x0; s_FR8012HAQ_low_blood = 0x0; - memset(s_FR8012HAQ_blood_data,0,sizeof(s_FR8012HAQ_blood_data)); s_FR8012HAQ_HRV = 0; //s_FR8012HAQ_wear_status = 0; s_FR8012HAQ_blood_oxygen = 0x0; + s_FR8012HAQ_blood_data_len = 0; //memset(&fr8012haq_hr_bp_bo_value, 0, sizeof(fr8012haq_hr_bp_bo_value)); } @@ -822,9 +847,9 @@ void FR8012HAQ_result_set_heart_rate(unsigned char heart_rate) //s_FR8012HAQ_heart_rate = heart_rate; if(s_FR8012HAQ_heart_rate_buff_count >= HEART_RATE_BUFF_LEN) s_FR8012HAQ_heart_rate_buff_count = 0; - s_FR8012HAQ_high_blood = (uint8_t)(heart_rate * 1.5); +// s_FR8012HAQ_high_blood = (uint8_t)(heart_rate * 1.5); - s_FR8012HAQ_low_blood = (uint8_t)(heart_rate * 0.95); +// s_FR8012HAQ_low_blood = (uint8_t)(heart_rate * 0.95); } void FR8012HAQ_result_set_wear_status(unsigned char wear_status) { diff --git a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h index 6155b601..fbfcd764 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h @@ -47,5 +47,5 @@ void FR8012HAQ_result_set_wear_status(unsigned char wear_status); unsigned char FR8012HAQ_result_get_wear_status(void); void FR8012HAQ_close(void); void fr8012haq_measure_stop(void); -void fr8012haq_blood_data_get(char *blood_buf); +int *fr8012haq_blood_data_get(int *len); #endif