中医情绪
authorp15692025051 <846603105@qq.com>
Thu, 18 Jan 2024 09:05:34 +0000 (17:05 +0800)
committerp15692025051 <846603105@qq.com>
Thu, 18 Jan 2024 09:05:34 +0000 (17:05 +0800)
2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c
2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h

index 5ab8125..1b2ee60 100644 (file)
@@ -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)
index 34e4f72..a9c8b7f 100644 (file)
@@ -28,6 +28,7 @@ typedef enum {
        HRS_MODE, 
        SPO2_MODE,
        BP_MODE,
+       EMO_MODE,//情绪
        TEMP_MODE,
        WEAR_MODE,
        HRV_MODE,