--- /dev/null
+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