From: p15692025051 <846603105@qq.com> Date: Thu, 18 Jan 2024 09:05:34 +0000 (+0800) Subject: 中医情绪 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=ee94644fb4ecf4d663726db9d7d29bd72ab63f65;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 5ab81254..1b2ee60b 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c @@ -52,6 +52,10 @@ static unsigned char s_FR8012HAQ_low_blood = 0x0;//血压/低压 #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;//接收的血压数据长度 + +#define s_FR8012HAQ_emo_data_mxa_len 8*1024 //60秒存的字节数大小 +int * s_FR8012HAQ_emo_data = NULL;//血压数据 +int s_FR8012HAQ_emo_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;//佩戴状态 @@ -459,14 +463,20 @@ void FR8012HAQ_test(uint32_t mode) uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"bp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"bp\"}")); break; + case EMO_MODE: + /* code */ + if(s_FR8012HAQ_emo_data ==NULL) + { + s_FR8012HAQ_emo_data = malloc(s_FR8012HAQ_emo_data_mxa_len); + memset(s_FR8012HAQ_emo_data,0,s_FR8012HAQ_emo_data_mxa_len); + } + s_FR8012HAQ_emo_data_len =0; + + uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"emo\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"emo\"}")); + break; case TEMP_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\":\"temp\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"temp\"}")); break; @@ -625,6 +635,26 @@ int fr8012haq_parse_returned_data(int timeout) } FR8012HAQ_LOG("\n"); } + /*情绪*/ + str_tmp = strstr(UART4_buf,"\"emo_data\":["); + if(str_tmp) + { + str_tmp += strlen("\"emo_data\":["); + char *emo_str_tmp = strstr(str_tmp,"]]"); + num_buf_len = emo_str_tmp+1-str_tmp; + if(s_FR8012HAQ_emo_data_len+num_buf_len+1 < s_FR8012HAQ_emo_data_mxa_len) + { + if(s_FR8012HAQ_emo_data_len != 0)//加逗号 + { + s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len] = ','; + s_FR8012HAQ_emo_data_len++; + } + memcpy(&s_FR8012HAQ_emo_data[s_FR8012HAQ_emo_data_len],str_tmp,num_buf_len); + s_FR8012HAQ_emo_data_len+=num_buf_len; + } + FR8012HAQ_LOG("emo_data:%s\n",s_FR8012HAQ_emo_data); + + } /*体温*/ str_tmp = strstr(UART4_buf,"\"temper_data\":\""); if(str_tmp) @@ -679,11 +709,11 @@ int fr8012haq_parse_returned_data(int timeout) memcpy(HA_req_code,str_tmp,num_buf_len); } /*中医数据*/ - str_tmp = strstr(UART4_buf,"\"yyl_data\":\""); + str_tmp = strstr(UART4_buf,"\"yyl_data\":["); if(str_tmp) { //unsigned char hrs = 0; - str_tmp += strlen("\"yyl_data\":\""); + str_tmp += strlen("\"yyl_data\":["); //timestamp num_buf_len = find_c(str_tmp,'/'); if(num_buf_len>=sizeof(num_buf)) @@ -694,7 +724,7 @@ int fr8012haq_parse_returned_data(int timeout) 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,'/'); + 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)); @@ -703,7 +733,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[areaUP]:%d\n",yyl_out_data[yyl_out_data_len].areaUP); str_tmp += num_buf_len+1; //areaUPBase - num_buf_len = find_c(str_tmp,'/'); + 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)); @@ -712,7 +742,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[areaUPBase]:%d\n",yyl_out_data[yyl_out_data_len].areaUPBase); str_tmp += num_buf_len+1; //areaUPHeight - num_buf_len = find_c(str_tmp,'/'); + 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)); @@ -721,7 +751,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[areaUPHeight]:%d\n",yyl_out_data[yyl_out_data_len].areaUPHeight); str_tmp += num_buf_len+1; //areaDOWN - num_buf_len = find_c(str_tmp,'/'); + 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)); @@ -730,7 +760,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[areaDOWN]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWN); str_tmp += num_buf_len+1; //areaDOWNBase - num_buf_len = find_c(str_tmp,'/'); + 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)); @@ -739,7 +769,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[areaDOWNBase]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWNBase); str_tmp += num_buf_len+1; //areaDOWNHeight - num_buf_len = find_c(str_tmp,'/'); + 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)); @@ -748,7 +778,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[areaDOWNHeight]:%d\n",yyl_out_data[yyl_out_data_len].areaDOWNHeight); str_tmp += num_buf_len+1; //RRI - num_buf_len = find_c(str_tmp,'/'); + 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)); @@ -757,7 +787,7 @@ int fr8012haq_parse_returned_data(int timeout) FR8012HAQ_LOG("yyl_out_data[RRI]:%d\n",yyl_out_data[yyl_out_data_len].RRI); str_tmp += num_buf_len+1; //motion - num_buf_len = find_c(str_tmp,'\"'); + 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)); @@ -834,7 +864,8 @@ void fr8012haq_process_data(uint32_t *process_data) break; } //FR8012HAQ_LOG("fr8012haq_process_data2:%d!!!!\n",FR8012HAQ_jobs_mode); - + // float tmp = 0x3FE2E147; + // FR8012HAQ_LOG("float:%f\n",tmp); fr8012haq_parse_returned_data(60); } @@ -859,6 +890,7 @@ int HA_lib_activate(char *key_code) char send_data[256] = {0}; int send_data_len = 0,ret = 0; char count = 5; + FR8012HAQ_LOG("HA_lib_activate:key:%s\n",HA_key_code); strncpy(HA_key_code,key_code,sizeof(HA_key_code)); if(strlen(HA_key_code)>2) { @@ -978,7 +1010,7 @@ void fr8012haq_measure_hr_start(void) void fr8012haq_measure_bo_start(void) { sys_pm_wakeup_no_lcd(); - FR8012HAQ_run_mode = SPO2_MODE; + FR8012HAQ_run_mode = EMO_MODE; FR8012HAQ_LOG("fr8012haq_measure_bo_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode); sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START); } @@ -990,6 +1022,13 @@ void fr8012haq_measure_bp_start(void) FR8012HAQ_LOG("fr8012haq_measure_bp_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode); sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START); } +void fr8012haq_measure_emo_start(void) +{ + sys_pm_wakeup_no_lcd(); + FR8012HAQ_run_mode = EMO_MODE ; + FR8012HAQ_LOG("fr8012haq_measure_bp_start :FR8012HAQ_run_mode:%d!!!!!!!!\n",FR8012HAQ_run_mode); + sensor_task_send_message(FR8012HAQ_ID,SENSOR_MSG_START); +} void fr8012haq_measure_YYL_start(void) { sys_pm_wakeup_no_lcd(); @@ -1021,6 +1060,11 @@ void FR8012HAQ_close(void) free(s_FR8012HAQ_blood_data); s_FR8012HAQ_blood_data = NULL; } + if(s_FR8012HAQ_emo_data!= NULL) + { + free(s_FR8012HAQ_emo_data); + s_FR8012HAQ_emo_data = NULL; + } uart4_send_data("{\"cmd\":\"1\",\"work_mode\":\"close\"}",sizeof("{\"cmd\":\"1\",\"work_mode\":\"close\"}")); fr8012haq_timer_cfg(false); //fr8012haq_hrs_disable @@ -1093,6 +1137,13 @@ int *fr8012haq_blood_data_get(int *len) *len = s_FR8012HAQ_blood_data_len; return s_FR8012HAQ_blood_data; } +//获取1分钟情绪数据,返回数据数组,已封装好string,可当参数返回给服务器,len:长度返回 +char *fr8012haq_emo_data_get(int *len) +{ + //memcpy(blood_buf,s_FR8012HAQ_blood_data,sizeof(s_FR8012HAQ_blood_data)); + *len = s_FR8012HAQ_emo_data_len; + return s_FR8012HAQ_emo_data; +} //获取云医链中医数据,一分钟产生一个,最多存30个。返回当前存多少个,yyl_data:数据复制缓冲区,必须大于30*sizeof(yylPFE_OutputData) //yylPFE_OutputData yyl_out_data int fr8012haq_YYL_data_get(yylPFE_OutputData *yyl_data) 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 34e4f724..a9c8b7fa 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h @@ -28,6 +28,7 @@ typedef enum { HRS_MODE, SPO2_MODE, BP_MODE, + EMO_MODE,//情绪 TEMP_MODE, WEAR_MODE, HRV_MODE,