更新脚本解析工具,增加横向分析表格
authorhcj <1224667075@qq.com>
Thu, 26 Dec 2024 13:29:09 +0000 (21:29 +0800)
committerhcj <1224667075@qq.com>
Thu, 26 Dec 2024 13:29:09 +0000 (21:29 +0800)
tools/log_parser/runtimeanalysis_2.0.py

index 3028e54..a9a3a88 100644 (file)
@@ -44,6 +44,9 @@ str_bin_list =[ ['0001', "开机 "],
                 ['0506',"运动测量心率暂停或结束"],\r
                 ['0507',"底层检测心率"],\r
                 ['0508',"底层检测心率结束"],\r
+                ['0509',"心率结果未佩戴"],\r
+                ['050a',"心率结果无效值"],\r
+                ['050b',"检测成功"],\r
                 ['0601',"开启佩戴检测"],\r
                 ['0602',"关闭佩戴检测"],\r
                 ['0701',"主动检测血氧"],\r
@@ -172,6 +175,9 @@ workbook = xlsxwriter.Workbook("runtime.xlsx")
 worksheet = workbook.add_worksheet("runtime_log")\r
 worksleepdata = workbook.add_worksheet("sleepdata")\r
 workvoltage = workbook.add_worksheet("voltage")\r
+workvoltage_time = workbook.add_worksheet("voltage_time")\r
+headings = ['time', 'ble连接','ble未连接','APP_ble_write_count','watch_reply_count','震动次数','屏幕亮','屏幕灭','心率测量时间','电压变化']\r
+workvoltage_time.write_row('A1', headings)\r
 \r
 with open(txtname,"rb+")as file:\r
     data_1 = file.read(2)\r
@@ -179,6 +185,7 @@ with open(txtname,"rb+")as file:
     i=0\r
     j=0\r
     z=0\r
+    k=1\r
     sys_sleep_last=-1\r
     sys_sleep_last_tick=0\r
     sys_sleep_tick=0\r
@@ -196,6 +203,27 @@ with open(txtname,"rb+")as file:
     fist_voltage=0.0\r
     last_voltage=0.0\r
     lats_time=0\r
+\r
+    last_ble_connect=0\r
+    ble_connect_state_updata_time=0\r
+    ble_no_connect_time=0\r
+    ble_connect_time=0\r
+\r
+    APP_send_coutn=0\r
+    watch_reply_count=0\r
+\r
+    motor_coutn=0\r
+\r
+    last_lcd_state=0\r
+    lcd_state_updata_time=0\r
+    lcd_no_screen_time=0\r
+    lcd_screen_time=0\r
+    \r
+    heart_state=0\r
+    heart_state_updata_time=0\r
+    heart_no_screen_time=0\r
+    heart_screen_time=0\r
+\r
     while data_1:\r
         \r
      \r
@@ -210,8 +238,16 @@ with open(txtname,"rb+")as file:
                     f_out.write(l[1])\r
                     worksheet.write(i, 0, l[1])\r
                     break\r
-      \r
+        data_2_int=int(data_2_bin,16)\r
+\r
+        if data_1_bin=='0107':\r
+            APP_send_coutn+=1\r
+        if data_1_bin=='0109':\r
+            watch_reply_count+=1\r
 \r
+        if data_1_bin=='0c01':\r
+            motor_coutn+=1\r
+        \r
         if  data_1_bin[:2]=='13':\r
             id=int(data_1_bin[2:],16)\r
             if id<len(PMID_list):\r
@@ -220,48 +256,176 @@ with open(txtname,"rb+")as file:
                 temp_str="投票ID: "+ data_1_bin[2:]\r
             f_out.write(temp_str)\r
             worksheet.write(i, 0, temp_str)\r
+\r
+        if  (data_1_bin =='0103') : #ble连接\r
+            if last_ble_connect ==0:\r
+                ble_no_connect_time+=(data_2_int-ble_connect_state_updata_time)\r
+                ble_connect_state_updata_time=data_2_int\r
+                last_ble_connect=1\r
+                print("0->1 ble连接")\r
+\r
+        if  (data_1_bin =='0104') : #断连\r
+            if last_ble_connect ==1:\r
+                ble_connect_time+=(data_2_int-ble_connect_state_updata_time)\r
+                ble_connect_state_updata_time=data_2_int\r
+                last_ble_connect=0\r
+                # print("0->1 ble断连")\r
+\r
+        if  (data_1_bin =='0801') : #亮屏\r
+            if last_lcd_state ==0:\r
+                lcd_no_screen_time+=(data_2_int-lcd_state_updata_time)\r
+                lcd_state_updata_time=data_2_int\r
+                last_lcd_state=1\r
+                # print("0->1 亮屏")\r
+\r
+        if  (data_1_bin =='0802') : #灭屏\r
+            if last_lcd_state ==1:\r
+                lcd_screen_time+=(data_2_int-lcd_state_updata_time)\r
+                lcd_state_updata_time=data_2_int\r
+                last_lcd_state=0\r
+                # print("0->1 灭屏")\r
+\r
+        # ['0507',"底层检测心率"],\r
+        # ['0508',"底层检测心率结束"],\r
+        #         heart_state=0\r
+        # heart_state_updata_time=0\r
+        # heart_no_screen_time=0\r
+        # heart_screen_time=0\r
+        if  (data_1_bin =='0507') : #开始检测\r
+            if heart_state ==0:\r
+                heart_no_screen_time+=(data_2_int-heart_state_updata_time)\r
+                heart_state_updata_time=data_2_int\r
+                heart_state=1\r
+\r
+        if  (data_1_bin =='0508') : #结束检测\r
+            if heart_state ==1:\r
+                heart_screen_time+=(data_2_int-heart_state_updata_time)\r
+                print("检测时间",data_2_int-heart_state_updata_time)\r
+                heart_state_updata_time=data_2_int\r
+                heart_state=0\r
+\r
+        \r
+\r
         if  (data_1_bin[:1]=='f') | (data_1_bin[:1]=='e'):\r
             worksheet.write(i, 0, "电压变化")\r
+           \r
         f_out.write(data_1_bin)\r
         f_out.write(' ')\r
         f_out.write(data_2_bin)\r
         f_out.write('\n')\r
-        data_2_int=int(data_2_bin,16)\r
+       \r
         worksheet.write(i, 1, data_1_bin)\r
         worksheet.write(i, 2, data_2_int)\r
         i+=1\r
         now_s_sleep_flag=0\r
         now_m_sleep_flag=0\r
 \r
-        if  data_1_bin[:1]=='f':\r
-            temp_str="4."+ data_1_bin[1:]\r
+\r
+        if  (data_1_bin[:1]=='f' )|(data_1_bin[:1]=='e'):\r
+            if data_1_bin[:1]=='f':\r
+                temp_str="4."+ data_1_bin[1:]\r
+            else:\r
+                temp_str="3."+ data_1_bin[1:]\r
             voltage=float(temp_str)\r
             workvoltage.write(z, 0, voltage)\r
             workvoltage.write(z, 1, data_2_int)\r
             workvoltage.write(z, 2, data_2_int-lats_time)\r
             workvoltage.write(z, 3, last_voltage-voltage)\r
-            lats_time=data_2_int\r
-\r
             z+=1\r
+            \r
 \r
-            last_voltage=voltage\r
-            if fist_voltage==0.0:\r
-                fist_voltage= voltage\r
+            workvoltage_time.write(k, 0,data_2_int)\r
+\r
+            if last_ble_connect==0:\r
+                ble_no_connect_time+=(data_2_int-ble_connect_state_updata_time)\r
+            if last_ble_connect==1:\r
+                ble_connect_time+=(data_2_int-ble_connect_state_updata_time)\r
+\r
+           \r
+            if (ble_no_connect_time+ble_connect_time):\r
+                ble_connect= ble_connect_time/(ble_no_connect_time+ble_connect_time)\r
+            else:\r
+                ble_connect=0\r
+           \r
+            if (ble_no_connect_time+ble_connect_time):\r
+                ble_no= ble_no_connect_time/(ble_no_connect_time+ble_connect_time)\r
+            else:\r
+                ble_no=0\r
+\r
+                    # last_lcd_state=0\r
+        # lcd_state_updata_time=0\r
+        # lcd_no_screen_time=0\r
+        # lcd_screen_time=0\r
+\r
+            if last_lcd_state==0:\r
+                lcd_no_screen_time+=(data_2_int-lcd_state_updata_time)\r
+            if last_lcd_state==1:\r
+                lcd_screen_time+=(data_2_int-lcd_state_updata_time)\r
+\r
+           \r
+            if (lcd_no_screen_time+lcd_screen_time):\r
+                lcd_screen= lcd_screen_time/(lcd_no_screen_time+lcd_screen_time)\r
+            else:\r
+                lcd_screen=0\r
+           \r
+            if (lcd_no_screen_time+lcd_screen_time):\r
+                lcd_no_screen= lcd_no_screen_time/(lcd_no_screen_time+lcd_screen_time)\r
+            else:\r
+                lcd_no_screen=0\r
+                    #         heart_state=0\r
+        # heart_state_updata_time=0\r
+        # heart_no_screen_time=0\r
+        # heart_screen_time=0\r
+\r
+            if heart_state==0:\r
+                heart_no_screen_time+=(data_2_int-heart_state_updata_time)\r
+            if heart_state==1:\r
+                heart_screen_time+=(data_2_int-heart_state_updata_time)\r
+\r
+           \r
+        \r
+\r
+\r
+\r
+            # headings = ['time', 'ble连接','ble未连接','APP_ble_write_count','watch_reply_count','震动次数','屏幕亮','屏幕灭','电压变化']\r
+\r
+            workvoltage_time.write(k, 1,ble_connect)\r
+            workvoltage_time.write(k, 2,ble_no)\r
+            workvoltage_time.write(k, 3,APP_send_coutn)\r
+            workvoltage_time.write(k, 4,watch_reply_count)\r
+            workvoltage_time.write(k, 5,motor_coutn)\r
+            workvoltage_time.write(k, 6,lcd_screen)\r
+            workvoltage_time.write(k, 7,lcd_no_screen)\r
+            workvoltage_time.write(k, 8,heart_screen_time)\r
+            workvoltage_time.write(k, 9,last_voltage-voltage)\r
             \r
-        if  data_1_bin[:1]=='e':\r
-            temp_str="3."+ data_1_bin[1:]\r
-            voltage=float(temp_str)\r
-            workvoltage.write(z, 0, voltage)\r
-            workvoltage.write(z, 1, data_2_int)\r
-            workvoltage.write(z, 2, data_2_int-lats_time)\r
-            workvoltage.write(z, 3, last_voltage-voltage)\r
-            lats_time=data_2_int\r
 \r
-            z+=1\r
+          \r
+\r
+            ble_no_connect_time=0\r
+            ble_connect_time=0\r
+            ble_connect_state_updata_time=data_2_int\r
+\r
+            lcd_no_screen_time=0\r
+            lcd_screen_time=0\r
+            lcd_state_updata_time=data_2_int\r
+\r
+            heart_no_screen_time=0\r
+            heart_screen_time=0\r
+            heart_state_updata_time=data_2_int\r
+\r
+\r
+            APP_send_coutn=0\r
             last_voltage=voltage\r
+            motor_coutn=0\r
+            watch_reply_count=0\r
+            lats_time=data_2_int\r
+\r
+            k+=1\r
+\r
             if fist_voltage==0.0:\r
                 fist_voltage= voltage\r
-\r
+            \r
         if coutn==0:\r
             fist_tick=data_2_int\r
 \r
@@ -286,7 +450,7 @@ with open(txtname,"rb+")as file:
                     j+=1\r
                     no_sys_sleep_tick+=data_2_int-sys_sleep_last_tick\r
                     \r
-                    print("0->1 睡")\r
+                    # print("0->1 睡")\r
                     sys_sleep_last=1\r
                     sys_sleep_last_tick=data_2_int\r
                 else:\r
@@ -301,7 +465,7 @@ with open(txtname,"rb+")as file:
                     worksleepdata.write(j, 3, data_2_int-sys_sleep_last_tick)\r
                     j+=1\r
                     sys_sleep_tick+=data_2_int-sys_sleep_last_tick\r
-                    print("1->0 醒")\r
+                    # print("1->0 醒")\r
                     sys_sleep_last=0\r
                     sys_sleep_last_tick=data_2_int\r
                 else:\r
@@ -324,7 +488,7 @@ with open(txtname,"rb+")as file:
                     worksleepdata.write(j, 3, data_2_int-M_sleep_last_tick)\r
                     j+=1\r
                     M_sleep_tick+=data_2_int-M_sleep_last_tick\r
-                    print("0->1 睡")\r
+                    # print("0->1 睡")\r
                     M_sleep_last=1\r
                     M_sleep_last_tick=data_2_int\r
                 else:\r
@@ -339,13 +503,13 @@ with open(txtname,"rb+")as file:
                     worksleepdata.write(j, 3, data_2_int-M_sleep_last_tick)\r
                     j+=1\r
                     no_M_sleep_tick+=data_2_int-M_sleep_last_tick\r
-                    print("1->0 醒")\r
+                    # print("1->0 醒")\r
                     M_sleep_last=0\r
                     M_sleep_last_tick=data_2_int\r
                 else:\r
                     print("erro")\r
         if (data_1_bin== '0002') | (data_1_bin== '0003')| (data_1_bin== '0004'):\r
-            toal_tick=data_2_int\r
+           \r
             if M_sleep_last==1:\r
                 worksleepdata.write(j, 0, "M 睡了")\r
                 worksleepdata.write(j, 1, M_sleep_last_tick)\r
@@ -353,7 +517,7 @@ with open(txtname,"rb+")as file:
                 worksleepdata.write(j, 3, data_2_int-M_sleep_last_tick)\r
                 j+=1\r
                 no_M_sleep_tick+=data_2_int-M_sleep_last_tick\r
-                print("1->关机 睡死")\r
+                # print("1->关机 睡死")\r
                 M_sleep_last=0\r
                 M_sleep_last_tick=data_2_int\r
             elif M_sleep_last==0:\r
@@ -363,7 +527,7 @@ with open(txtname,"rb+")as file:
                 worksleepdata.write(j, 3, data_2_int-M_sleep_last_tick)\r
                 j+=1\r
                 M_sleep_tick+=data_2_int-M_sleep_last_tick\r
-                print("0->关机 醒死")\r
+                # print("0->关机 醒死")\r
                 M_sleep_last=0\r
                 M_sleep_last_tick=data_2_int\r
                 \r
@@ -374,7 +538,7 @@ with open(txtname,"rb+")as file:
                 worksleepdata.write(j, 3, data_2_int-sys_sleep_last_tick)\r
                 j+=1\r
                 sys_sleep_tick+=data_2_int-sys_sleep_last_tick\r
-                print("1->关机 睡死")\r
+                # print("1->关机 睡死")\r
                 M_sleep_last=0\r
                 M_sleep_last_tick=data_2_int\r
             elif sys_sleep_last==0:\r
@@ -384,14 +548,14 @@ with open(txtname,"rb+")as file:
                 worksleepdata.write(j, 3, data_2_int-sys_sleep_last_tick)\r
                 j+=1\r
                 no_sys_sleep_tick+=data_2_int-sys_sleep_last_tick\r
-                print("0->关机 醒死")\r
+                # print("0->关机 醒死")\r
                 M_sleep_last=0\r
                 M_sleep_last_tick=data_2_int\r
          \r
 \r
 \r
         coutn+=1\r
-    \r
+        toal_tick=data_2_int\r
         data_1 = file.read(2)\r
         data_2 = file.read(4)\r
         # data_1_int=int(data_1) \r