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