更新运行日志解析工具 1563/1 1563/head
authorhcj <1224667075@qq.com>
Tue, 24 Dec 2024 08:20:49 +0000 (16:20 +0800)
committerhcj <1224667075@qq.com>
Tue, 24 Dec 2024 08:20:49 +0000 (16:20 +0800)
tools/log_parser/runtimeanalysis_2.0.py [new file with mode: 0644]

diff --git a/tools/log_parser/runtimeanalysis_2.0.py b/tools/log_parser/runtimeanalysis_2.0.py
new file mode 100644 (file)
index 0000000..3028e54
--- /dev/null
@@ -0,0 +1,429 @@
+import os\r
+import sys\r
+import xlsxwriter\r
+\r
+path = r"."\r
+\r
+\r
+txtname = sys.argv[-1]\r
+\r
+str_bin_list =[ ['0001', "开机 "],  \r
+                ['0002', "关机 "],  \r
+                ['0003', "重启 "],  \r
+                ['0004', "ota升级 "],  \r
+                ['0005', "恢复出厂设置 "],  \r
+                ['0801', "屏幕亮 "],  \r
+                ['0802', "屏幕灭 "],  \r
+                ['0a01', "充电开始 "],  \r
+                ['0a02', "充电停止 "],  \r
+                ['0e01', "本地音乐开始播放 "],  \r
+                ['0e02', "本地音乐开始暂停 "],  \r
+                ['0e03', "本地音乐播放停止 "],  \r
+                ['0f01', "闹钟铃声开始播放 "],  \r
+                ['0f02', "闹钟铃声播放停止 "],  \r
+                ['0f03', "倒计时铃声开始播放 "],  \r
+                ['0f04', "倒计时铃声播放停止 "],  \r
+                ['0f05', "查找手表铃声开始播放 "],  \r
+                ['0f06', "查找手表铃声播放停止 "],  \r
+                ['1101', "录音开始 "],  \r
+                ['1102', "录音停止 "],  \r
+                ['1103', "AI录音开始 "],  \r
+                ['1104', "AI录音停止 "],\r
+                ['0401',"手表发起运动"],\r
+                ['0402',"app发起运动"],\r
+                ['0403',"开始特殊运动"],\r
+                ['0404',"开始普通运动"],\r
+                ['0405',"停止运动"],\r
+                ['0406',"恢复运动"],\r
+                ['0407',"运动结束"],\r
+                ['0501',"主动检测心率"],\r
+                ['0502',"主动检测心率结束"],\r
+                ['0503',"被动检测心率"],\r
+                ['0504',"被动检测心率结束"],\r
+                ['0505',"运动测量心率开始或继续"],\r
+                ['0506',"运动测量心率暂停或结束"],\r
+                ['0507',"底层检测心率"],\r
+                ['0508',"底层检测心率结束"],\r
+                ['0601',"开启佩戴检测"],\r
+                ['0602',"关闭佩戴检测"],\r
+                ['0701',"主动检测血氧"],\r
+                ['0702',"主动检测血氧结束"],\r
+                ['0901',"抬腕亮屏"],\r
+                ['0902',"翻腕灭屏"],\r
+                ['0b01',"电量增加"],\r
+                ['0b02',"电量减少"],\r
+                ['0c01',"马达震动"],\r
+                ['1201',"消息弹窗显示"],\r
+                ['0101',"广播开启"],\r
+                ['0102',"广播关闭"],\r
+                ['0103',"ble连接"],\r
+                ['0104',"ble断开"],\r
+                ['0105',"连接参数更新50"],\r
+                ['0106',"连接参数更新12"],\r
+                ['0107',"APP下发命令"],\r
+                ['0108',"支付宝命令"],\r
+                ['0109',"手表回复"],\r
+                ['010a',"同步结束"],\r
+                ['010b',"HFP连接"],\r
+                ['010c',"HFP断开"],\r
+                ['010d',"A2DP连接"],\r
+                ['010e',"A2DP断开"],\r
+                ['010f',"A2DP流创建"],\r
+                ['0110',"A2DP流销毁"],\r
+                ['0111',"A2DP开始播放"],\r
+                ['0112',"连接耳机"],\r
+                ['0113',"断开耳机"],\r
+                ['0201',"HFP电话接听"],\r
+                ['0202',"HFP电话挂起"],\r
+                ['0203',"HFP电话拨打"],\r
+                ['0204',"HFP电话响铃"],\r
+                ['0205',"HFP电话来电"],\r
+                ['0206',"HFP电话等待"],\r
+                ['0207',"HFP电话结束"],\r
+                ['0208',"HFP电话拨打电话"],\r
+                ['0209',"cat1电话拨打"],\r
+                ['020a',"cat1电话来电"],\r
+                ['020b',"cat1电话等待"],\r
+                ['020c',"cat1电话接听"],\r
+                ['020d',"cat1电话结束"],\r
+                ['020e',"cat1电话拒绝"],\r
+                ['020f',"电话状态复位"],\r
+                ['0301',"CAT1来电消息"],\r
+                ['0302',"获取Cat1信号信息,VOLTE信息,信号强度,SIM卡状态"],\r
+                ['0303',"获取Cat1时间"],\r
+                ['0304',"CAT1电话接听消息"],\r
+                ['0305',"CAT1电话挂断消息"],\r
+                ['0306',"触发Cat1 OTA升级"],\r
+                ['0307',"UDP_MSG_REPLY"],\r
+                ['0308',"BLE发送移动入库地址"],\r
+                ['0309',"获取Cat1版本号"],\r
+                ['030a',"CAT1 AT指令"],\r
+                ['030b',"入库配置flag"],\r
+                ['1001',"M_SLEEP_1"],#睡\r
+                ['1002',"M_SLEEP_0"],#没睡\r
+                ['1003',"S_SLEEP_1"],#睡\r
+                ['1004',"S_SLEEP_0"],#没睡\r
+]\r
+\r
+    # PM_ID_BSP,\r
+    # PM_ID_SYS,\r
+    # PM_ID_BTH,\r
+    # PM_ID_BTC,\r
+    # PM_ID_AUDIO,\r
+    # PM_ID_VIDEO,\r
+    # PM_ID_DMA,\r
+    # PM_ID_DPU,\r
+    # PM_ID_VAU,\r
+    # PM_ID_BUTTON,\r
+    # PM_ID_DEBUG,\r
+    # PM_ID_ADC,\r
+    # PM_ID_DFX,\r
+    # PM_ID_SCREEN,\r
+    # PM_ID_STORAGE,\r
+    # PM_ID_TOUCH,\r
+    # PM_ID_JPEG,\r
+       # PM_ID_JS,\r
+       # PM_ID_MSGCENTER,\r
+    # PM_ID_SPI_DMA,\r
+    # PM_ID_I2C_DMA,\r
+    # PM_ID_UART_DMA,\r
+    # PM_ID_HEART,//新增,心率芯片\r
+    # PM_ID_MOTOR,//新增,马达\r
+    # PM_ID_GSENSOR,//新增,加速计\r
+    # PM_ID_CAT1,//Cat1 communication\r
+    # PM_ID_P_TEST,//产测\r
+    # PM_ID_MAX,\r
+\r
+PMID_list=[\r
+    "PM_ID_BSP",\r
+    "PM_ID_SYS",\r
+    "PM_ID_BTH",\r
+    "PM_ID_BTC",\r
+    "PM_ID_AUDIO",\r
+    "PM_ID_VIDEO",\r
+    "PM_ID_DMA",\r
+    "PM_ID_DPU",\r
+    "PM_ID_VAU",\r
+    "PM_ID_BUTTON",\r
+    "PM_ID_DEBUG",\r
+    "PM_ID_ADC",\r
+    "PM_ID_DFX",\r
+    "PM_ID_SCREEN",\r
+    "PM_ID_STORAGE",\r
+    "PM_ID_TOUCH",\r
+    "PM_ID_JPEG",\r
+       "PM_ID_JS",\r
+       "PM_ID_MSGCENTER",\r
+    "PM_ID_SPI_DMA",\r
+    "PM_ID_I2C_DMA",\r
+    "PM_ID_UART_DMA",\r
+    "PM_ID_HEART",#//新增,心率芯片\r
+    "PM_ID_MOTOR",#//新增,马达\r
+    "PM_ID_GSENSOR",#//新增,加速计\r
+    "PM_ID_CAT1",#//Cat1 communication\r
+    "PM_ID_P_TEST",\r
+    "PM_ID_BUTTON_GPIO",\r
+    "PM_ID_MAX"\r
+]\r
+\r
+f_out = open("runtimeout.txt","w+")\r
+\r
+workbook = xlsxwriter.Workbook("runtime.xlsx")\r
+worksheet = workbook.add_worksheet("runtime_log")\r
+worksleepdata = workbook.add_worksheet("sleepdata")\r
+workvoltage = workbook.add_worksheet("voltage")\r
+\r
+with open(txtname,"rb+")as file:\r
+    data_1 = file.read(2)\r
+    data_2 = file.read(4)\r
+    i=0\r
+    j=0\r
+    z=0\r
+    sys_sleep_last=-1\r
+    sys_sleep_last_tick=0\r
+    sys_sleep_tick=0\r
+    no_sys_sleep_tick=0\r
+\r
+    M_sleep_last=-1\r
+    M_sleep_last_tick=0\r
+    M_sleep_tick=0\r
+    no_M_sleep_tick=0\r
+\r
+    power_down=0\r
+\r
+    coutn=0\r
+    toal_tick=0\r
+    fist_voltage=0.0\r
+    last_voltage=0.0\r
+    lats_time=0\r
+    while data_1:\r
+        \r
+     \r
+        # data_1_bin = data_1.hex()\r
+        data_1_bin = ''.join('{:02x}'.format(b) for b in data_1[::-1])  # 大端显示的16进制字符串\r
+        data_2_bin = ''.join('{:02x}'.format(b) for b in data_2[::-1])  # 大端显示的16进制字符串\r
+      \r
+        for l in str_bin_list:\r
+            \r
+            if l[0]==data_1_bin :\r
+                # if data_1_bin[:2]=='10':\r
+                    f_out.write(l[1])\r
+                    worksheet.write(i, 0, l[1])\r
+                    break\r
+      \r
+\r
+        if  data_1_bin[:2]=='13':\r
+            id=int(data_1_bin[2:],16)\r
+            if id<len(PMID_list):\r
+                temp_str="投票ID: "+ PMID_list[id]\r
+            else:\r
+                temp_str="投票ID: "+ data_1_bin[2:]\r
+            f_out.write(temp_str)\r
+            worksheet.write(i, 0, temp_str)\r
+        if  (data_1_bin[:1]=='f') | (data_1_bin[:1]=='e'):\r
+            worksheet.write(i, 0, "电压变化")\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
+        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
+            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
+            last_voltage=voltage\r
+            if fist_voltage==0.0:\r
+                fist_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
+            last_voltage=voltage\r
+            if fist_voltage==0.0:\r
+                fist_voltage= voltage\r
+\r
+        if coutn==0:\r
+            fist_tick=data_2_int\r
+\r
+        if data_1_bin=='0b02':\r
+            power_down+=1\r
+\r
+        if sys_sleep_last==-1:\r
+            if data_1_bin=='1003':\r
+                sys_sleep_last=1\r
+                sys_sleep_last_tick=data_2_int\r
+            elif data_1_bin=='1004':\r
+                sys_sleep_last=0\r
+                sys_sleep_last_tick=data_2_int\r
+        else:\r
+            if data_1_bin=='1003':\r
+                now_s_sleep_flag=1\r
+                if sys_sleep_last==0:\r
+                    worksleepdata.write(j, 0, "sys 没睡")\r
+                    worksleepdata.write(j, 1, sys_sleep_last_tick)\r
+                    worksleepdata.write(j, 2, data_2_int)\r
+                    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
+                    \r
+                    print("0->1 睡")\r
+                    sys_sleep_last=1\r
+                    sys_sleep_last_tick=data_2_int\r
+                else:\r
+                    print("erro")\r
+\r
+            elif data_1_bin=='1004':\r
+                now_s_sleep_flag=0\r
+                if sys_sleep_last==1:\r
+                    worksleepdata.write(j, 0, "sys 睡了")\r
+                    worksleepdata.write(j, 1, sys_sleep_last_tick)\r
+                    worksleepdata.write(j, 2, data_2_int) \r
+                    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
+                    sys_sleep_last=0\r
+                    sys_sleep_last_tick=data_2_int\r
+                else:\r
+                    print("erro")\r
+\r
+        if M_sleep_last==-1:\r
+            if data_1_bin=='1001':\r
+                M_sleep_last=1\r
+                M_sleep_last_tick=data_2_int\r
+            elif data_1_bin=='1002':\r
+                M_sleep_last=0\r
+                M_sleep_last_tick=data_2_int\r
+        else:\r
+            if data_1_bin=='1001':\r
+                now_s_sleep_flag=1\r
+                if M_sleep_last==0:\r
+                    worksleepdata.write(j, 0, "M 没睡")\r
+                    worksleepdata.write(j, 1, M_sleep_last_tick)\r
+                    worksleepdata.write(j, 2, data_2_int)\r
+                    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
+                    M_sleep_last=1\r
+                    M_sleep_last_tick=data_2_int\r
+                else:\r
+                    print("erro")\r
+\r
+            elif data_1_bin=='1002':\r
+                now_s_sleep_flag=0\r
+                if M_sleep_last==1:\r
+                    worksleepdata.write(j, 0, "M 睡了")\r
+                    worksleepdata.write(j, 1, M_sleep_last_tick)\r
+                    worksleepdata.write(j, 2, data_2_int)\r
+                    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
+                    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
+            if M_sleep_last==1:\r
+                worksleepdata.write(j, 0, "M 睡了")\r
+                worksleepdata.write(j, 1, M_sleep_last_tick)\r
+                worksleepdata.write(j, 2, data_2_int)\r
+                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
+                M_sleep_last=0\r
+                M_sleep_last_tick=data_2_int\r
+            elif M_sleep_last==0:\r
+                worksleepdata.write(j, 0, "M 没睡")\r
+                worksleepdata.write(j, 1, M_sleep_last_tick)\r
+                worksleepdata.write(j, 2, data_2_int)\r
+                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
+                M_sleep_last=0\r
+                M_sleep_last_tick=data_2_int\r
+                \r
+            if sys_sleep_last==1: \r
+                worksleepdata.write(j, 0, "sys 睡了")\r
+                worksleepdata.write(j, 1, sys_sleep_last_tick)\r
+                worksleepdata.write(j, 2, data_2_int)\r
+                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
+                M_sleep_last=0\r
+                M_sleep_last_tick=data_2_int\r
+            elif sys_sleep_last==0:\r
+                worksleepdata.write(j, 0, "sys 没睡")\r
+                worksleepdata.write(j, 1, sys_sleep_last_tick)\r
+                worksleepdata.write(j, 2, data_2_int)\r
+                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
+                M_sleep_last=0\r
+                M_sleep_last_tick=data_2_int\r
+         \r
+\r
+\r
+        coutn+=1\r
+    \r
+        data_1 = file.read(2)\r
+        data_2 = file.read(4)\r
+        # data_1_int=int(data_1) \r
+file.close()\r
+f_out.close()\r
+# print("xxxxxxxxxxxxxxxxxx DATA xxxxxxxxxxxxxxxxxxxxxx")\r
+\r
+print("睡了的 no_sys_sleep_tick ",no_sys_sleep_tick)\r
+print("没睡的 sys_sleep_tick ",sys_sleep_tick)\r
+if no_sys_sleep_tick+sys_sleep_tick:\r
+    p=no_sys_sleep_tick/(no_sys_sleep_tick+sys_sleep_tick)\r
+    print("sys 没睡占比 ",p)\r
+else:\r
+    print("0000000")\r
+\r
+\r
+print("睡了的 no_M_sleep_tick ",no_M_sleep_tick)\r
+print("没睡的 M_sleep_tick ",M_sleep_tick)\r
+if M_sleep_tick+no_M_sleep_tick:\r
+    p=M_sleep_tick/(M_sleep_tick+no_M_sleep_tick)\r
+    print("m 没睡占比 ",p)\r
+else:\r
+    print("0000000")\r
+\r
+print("电量减少次数 ",power_down)\r
+\r
+mi= toal_tick/1000/60\r
+print("实际运行分钟约为:{}分钟".format(mi))\r
+\r
+print("电压变化:{}->{}".format(fist_voltage,last_voltage))\r
+\r
+# print("xxxxxxxxxxxxxxxxxx END xxxxxxxxxxxxxxxxxxxxxx")\r
+\r
+workbook.close()\r
+\r