From: p15692025051 <846603105@qq.com> Date: Wed, 24 Jan 2024 01:50:16 +0000 (+0800) Subject: 血压 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=160d99f6007ea2218e507770cf56d75dbda47389;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 8ba6d518..049f7a6e 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c @@ -56,6 +56,11 @@ int s_FR8012HAQ_blood_data_len = 0;//接收的血压数据长度 #define s_FR8012HAQ_emo_data_mxa_len 8*1024 //60秒存的字节数大小 char * s_FR8012HAQ_emo_data = NULL;//情绪数据 int s_FR8012HAQ_emo_data_len = 0;//情绪的血压数据长度 + +#define s_FR8012HAQ_yyl_data_mxa_len 20*1024 //最大缓冲区 +char * s_FR8012HAQ_yyl_data = NULL;//中医数据 +int s_FR8012HAQ_yyl_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;//佩戴状态 @@ -64,7 +69,7 @@ static float temp = 0.00; unsigned char s_FR8012HAQ_heart_rate_buff[HEART_RATE_BUFF_LEN]={0}; unsigned short s_FR8012HAQ_heart_rate_buff_count = 0; uint32_t FR8012HAQ_run_mode = NULL_MODE; -uint32_t FR8012HAQ_jobs_mode = NULL_MODE; + int ir_wear = 0;//红外佩戴状态 int cap_wear = 1;//电容佩戴状态 char is_open_sar = 1;//是否打开sar检测 @@ -384,17 +389,17 @@ void fr8012haq_timer_cfg(bool en) if(fr8012haq_timer == NULL ) uos_timer_create(&fr8012haq_timer); //fr8012haq_timer = Helios_Timer_init( (void* )fr8012haq_timerout_cb, NULL); - if(FR8012HAQ_jobs_mode == WEAR_MODE) + if(FR8012HAQ_run_mode == WEAR_MODE) { uos_timer_start(fr8012haq_timer, MS_TO_TICKS(3000), MS_TO_TICKS(3000), fr8012haq_timerout_cb, NULL); - }else if(FR8012HAQ_jobs_mode == BP_MODE)//血压150MS + }else if(FR8012HAQ_run_mode == BP_MODE)//血压150MS { - + FR8012HAQ_LOG("fr8012haq_timer_cfg:BP_MODE!!!!!\n"); uos_timer_start(fr8012haq_timer, MS_TO_TICKS(150), MS_TO_TICKS(150), fr8012haq_timerout_cb, NULL); - }else if(FR8012HAQ_jobs_mode == YYL_MODE)//中医50秒 + }else if(FR8012HAQ_run_mode == YYL_MODE)//中医30秒 { - uos_timer_start(fr8012haq_timer, MS_TO_TICKS(50000), MS_TO_TICKS(50000), fr8012haq_timerout_cb, NULL); + uos_timer_start(fr8012haq_timer, MS_TO_TICKS(10000), MS_TO_TICKS(10000), fr8012haq_timerout_cb, NULL); }else//其他1秒 { @@ -497,11 +502,24 @@ void FR8012HAQ_test(uint32_t mode) break; } } - if(fr8012haq_parse_returned_data(60) == 1)//必须解析到执行成功 + if(fr8012haq_parse_returned_data(100) == 1)//必须解析到执行成功 + break; + UOS_SleepMs(100); + } + char send_data[100] = {0}; + int send_data_len = 0; + unsigned int time = 0; + Hal_Rtc_Gettime_Count(&time); + count = 5;//重试次数 + UOS_SleepMs(100); + while(count--) + { + send_data_len = snprintf(send_data,sizeof(send_data),"{\"cmd\":\"3\",\"set_time\":\"%d\"}\n",time);//发送时间戳 + uart4_send_data(send_data,send_data_len); + if(fr8012haq_parse_returned_data(100) == 3)//必须解析到执行成功 break; UOS_SleepMs(100); } - fr8012haq_timer_cfg(true); FR8012HAQ_LOG("FR8012HAQ_test2:%d!!!!\n\n",mode); @@ -513,18 +531,10 @@ static void fr8012haq_start(void) hal_fr8012haq_int_init(); - if(FR8012HAQ_jobs_mode != NULL_MODE)//没关闭就打开其他模式,先关闭一次 - { - // FR8012HAQ_close(); - // fr8012haq_delay(20); - // FR8012HAQ_jobs_mode = NULL_MODE; - } - // else - // FR8012HAQ_restart(); + FR8012HAQ_test(FR8012HAQ_run_mode); - FR8012HAQ_jobs_mode = FR8012HAQ_run_mode; - FR8012HAQ_run_mode = NULL_MODE; + // hal_gh30x_int_init(); // fr8012haq_en_gpio_enable(false); @@ -546,7 +556,6 @@ static void fr8012haq_stop(void) FR8012HAQ_close(); //FR8012HAQ_LOG("FR8012HAQ_irq_cb: 1111111111111!!!!!!!!\r\n"); //FR8012HAQ_run_mode = NULL_MODE; - //FR8012HAQ_jobs_mode = NULL_MODE; fr8012haq_ppg_timerout_flag = 0; fr8012haq_agc_timerout_flag = 0; Timer0_Switch(0); @@ -554,16 +563,19 @@ static void fr8012haq_stop(void) } //读取并解析返回数据 #define DATA_HANDLE (1<<24) -#define UART4_BUF_LEN 2*1024 -#define YYL_OUT_DATA_SIZE 30 -yylPFE_OutputData yyl_out_data[YYL_OUT_DATA_SIZE]={0}; -int yyl_out_data_len = 0; +#define UART4_BUF_LEN 4*1024 + +void my_str_print(char *data,int len) +{ + for(int i = 0;i=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].timestamp = int_tmp; - FR8012HAQ_LOG("yyl_out_data[timestamp]:%d\n",yyl_out_data[yyl_out_data_len].timestamp); - str_tmp += num_buf_len+1; - //areaUP - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].areaUP = int_tmp; - FR8012HAQ_LOG("yyl_out_data[areaUP]:%d\n",yyl_out_data[yyl_out_data_len].areaUP); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //areaUPBase - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].areaUPBase = int_tmp; - FR8012HAQ_LOG("yyl_out_data[areaUPBase]:%d\n",yyl_out_data[yyl_out_data_len].areaUPBase); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //areaUPHeight - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].areaUPHeight = int_tmp; - FR8012HAQ_LOG("yyl_out_data[areaUPHeight]:%d\n",yyl_out_data[yyl_out_data_len].areaUPHeight); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //areaDOWN - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].areaDOWN = int_tmp; - FR8012HAQ_LOG("yyl_out_data[areaDOWN]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWN); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //areaDOWNBase - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].areaDOWNBase = int_tmp; - FR8012HAQ_LOG("yyl_out_data[areaDOWNBase]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWNBase); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //areaDOWNHeight - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].areaDOWNHeight = int_tmp; - FR8012HAQ_LOG("yyl_out_data[areaDOWNHeight]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWNHeight); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //RRI - num_buf_len = find_c(str_tmp,','); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].RRI = int_tmp; - FR8012HAQ_LOG("yyl_out_data[RRI]:%d\n",yyl_out_data[yyl_out_data_len].RRI); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; - //motion - num_buf_len = find_c(str_tmp,']'); - if(num_buf_len>=sizeof(num_buf)) - num_buf_len = sizeof(num_buf)-1; - memset(num_buf,0,sizeof(num_buf)); - memcpy(num_buf,str_tmp,num_buf_len); - int_tmp = atoi(num_buf); - yyl_out_data[yyl_out_data_len].motion = int_tmp; - FR8012HAQ_LOG("yyl_out_data[motion]:%d\n",yyl_out_data[yyl_out_data_len].motion); - FR8012HAQ_LOG("num_buf[%d]:%s\n",num_buf_len,num_buf); - str_tmp += num_buf_len+1; + if(s_FR8012HAQ_yyl_data == NULL)//第一次用 + { + s_FR8012HAQ_yyl_data = malloc(yyl_data_len); + s_FR8012HAQ_yyl_data_len = 0; + + }else + { + char *s_FR8012HAQ_yyl_data_tmp = malloc(yyl_data_len+s_FR8012HAQ_yyl_data_len); + memcpy(s_FR8012HAQ_yyl_data_tmp,s_FR8012HAQ_yyl_data,s_FR8012HAQ_yyl_data_len); + free(s_FR8012HAQ_yyl_data); + s_FR8012HAQ_yyl_data = s_FR8012HAQ_yyl_data_tmp; - if(yyl_out_data_len