首页 > 编程语言 >python + QXDM5高通平台通过自动化截取log方法及代码

python + QXDM5高通平台通过自动化截取log方法及代码

时间:2023-04-14 15:13:09浏览次数:44  
标签:protocolHandle deviceHandle log QXDM python QXDM5 print retVal

转自python + QXDM5高通平台通过自动化截取log方法及代码

准备工作:

1.安装QXDM5

2.配置adb 环境变量

3.使用python 3以上

4.完成代码如下

  1 import sys
  2 import time
  3 import os
  4  
  5 if sys.platform.startswith("linux"):
  6     sys.path.append('/opt/qcom/QXDM/Support/python')
  7  
  8 elif sys.platform.startswith("win"):
  9     sys.path.append('C:\Program Files (x86)\Qualcomm\QXDM5\Support\python') #QXDM5的默认路径
 10     sys.path.append('C:\Program Files (x86)\Qualcomm\QUTS\Support\python')
 11  
 12 elif sys.platform.startswith("darwin"):
 13     sys.path.append('/Applications/Qualcomm/QUTS/QUTS.app/Contents/Support/python')
 14  
 15 import QutsClient
 16 import QxdmAutomationClient
 17 import QxdmAutomationService.ttypes
 18  
 19  
 20 class deviceManager(object):
 21     #通过模块的devicesID获取QXDM需要连接设备的devicehandle, protocolHandle
 22     def getDeviceInfo(self,devid,getPortName="Diagnostics"):
 23         protocolHandle = ""
 24         deviceHandle = ""
 25         comport = ""
 26         try:
 27             try:
 28                 client = QutsClient.QutsClient("QUTS Sample")
 29             except Exception as e:
 30                 logging.info("Exception starting client:%s" %e)
 31  
 32             if client is None:
 33                 logging.info('QUTS客户端未实例化,请确认是否安装....')
 34             else:
 35                 logging.info('初始化客户端....')
 36  
 37             deviceManager = client.getDeviceManager()
 38  
 39             time.sleep(1)
 40  
 41             deviceList = deviceManager.getDeviceList()
 42             for element in deviceList:
 43                 if element.adbSerialNumber == devid:
 44                     a = element.protocols
 45                     for x in a:
 46                         print(getPortName,x.description)
 47                         if getPortName in x.description:
 48                             protocolHandle = x.protocolHandle
 49                             deviceHandle = x.deviceHandle
 50                             comport = x.description.split("(")[-1].replace(")","")
 51                             break
 52                 
 53             print(deviceHandle, protocolHandle,  comport)
 54             return deviceHandle, protocolHandle,  comport
 55         except Exception as e:
 56             logging.info("获取端口信息失败,失败原因%s" %e)
 57             return deviceHandle, protocolHandle,  comport
 58  
 59  
 60  
 61  
 62 class ControlQXDM(object):
 63     def startQXDM(self,devid,dmcFile="yourdmcFiledir"):
 64         deviceHandle, protocolHandle, comport = deviceManager().getDeviceInfo(devid)
 65         print("Creating QXDM Automation client\n")
 66         qxdm_auto_client = QxdmAutomationClient.QxdmAutomationClient("OpenQXDMLog")
 67         qxdmAutomationHandle = qxdm_auto_client.getQxdmAutomationManager()
 68  
 69         # Init Service
 70         init = qxdmAutomationHandle.InitializeService()
 71  
 72         if (init == False):
 73             logging.info("初始化QXDM失败,已存在该服务....")
 74  
 75         qxdmAutomationHandle.SetVisible(True)
 76  
 77         retVal = qxdmAutomationHandle.LoadConfig(os.getcwd() + dmcFile)
 78         if not retVal:
 79             print("导入dmc配置文件失败,无法开启log,请查看是否存在该文件%s...." %os.getcwd() + dmcFile)
 80             return False
 81         # hdffile = "C:\\Temp\\testlog\\nas_logging.hdf"
 82         # retVal = qxdmAutomationHandle.LoadItemStore(hdffile)
 83  
 84         deviceInfo = QxdmAutomationService.ttypes.ConnectDeviceInfo(int(deviceHandle), int(protocolHandle))
 85  
 86         retVal = qxdmAutomationHandle.ConnectToDevice(deviceInfo)
 87         if not retVal:
 88             print("连接设备失败....")
 89             return False
 90         return qxdmAutomationHandle
 91  
 92 # 仅保存可以使用如下方法:
 93 #  retVal = obj.SaveItemStore(logName)
 94  
 95     def stopQxdm(self,obj,logName):
 96         try:
 97             obj.DisconnectFromDevice()
 98             retVal = obj.SaveItemStore(logName)
 99             if not retVal:
100                 print("保存QXDM log失败....")
101                 return False
102  
103             print("Closing QXDM session in 5 seconds")
104             time.sleep(5)
105             obj.Close()
106         except Exception as e:
107             print("保存log失败,失败原因:%s" %e)
108             return False
109  
110  
111 if __name__ == '__main__':
112     #调用参考如下:
113  
114     obj=ControlQXDM().startQXDM("1234567") #启动QXDM,你会看到QXDM窗口正在截取log
115  
116     time.sleep(10)
117  
118     
119  
120     logName = "d:\\123-1.hdf"
121     retVal = obj.SaveItemStore(logName)  #保存并清空log
122     print(retVal)
123     logName = "d:\\1\\123-2.hdf"
124  
125     time.sleep(10)
126  
127  
128     ControlQXDM().stopQxdm(obj,"d:\\456.hdf") #保存并关闭QXDM

 

标签:protocolHandle,deviceHandle,log,QXDM,python,QXDM5,print,retVal
From: https://www.cnblogs.com/edenpei/p/python.html

相关文章

  • window10安装python开发环境
    一、下载安装python二、下载安装pychram三、pychram激活 一、下载安装python1.下载pythonpython官网是  https://www.python.org/ 移动鼠标到downloads,然后点击windows,就可以看到关于windows的相关安装版本。左边StableReleases是稳定版......
  • python 之 session鉴权的处理
    一、session鉴权的处理1.requests的会话对象就像一个浏览器一样,它会在同一个会话中自动处理cookie信息,不需要写任何额外的代码。importrequests  session=requests.Session()#理解为就是一个浏览器  type(session)  requests.sessions.Sess......
  • python3数据类型
    1、介绍python是解释型语言,变量不声明类型,而是由赋值进行确定,比如=之后的字面量或类型,或者形参接收的实参。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。2、标准数据类型包括数值number(int、float、bool、comlex)、字符串str、元组tuple、列表list、集合set、......
  • Python实现简易勒索病毒
    一、勒索病毒简单来说,勒索病毒就是通过加密受害者电脑的本地数据,向受害者勒索赎金的恶意软件。加密勒索软件的核心是加密算法,我自己实现的勒索病毒使用的就是安全度高破解难度大的RSA加密算法。RSA是一种非对称公钥加密算法,依赖于大质数分解难题,通过公钥无法轻易破解私钥。此......
  • log4jnet中不输出报错的行号
    log4jnet中不输出报错的行号,后来发现原因是因为自己写了一个帮助类,报错的行号一直是该类的行号  需要把原始的Exception的参数传递过来就可以了,要不然一直都是帮助类的行号......
  • macos shangflask tradingview python环境安装
    1.Homebrew4.0后更新报错问题原文参考brewupdateFailedtodownloadhttps://formulae.brew.sh/api/formula.jws.json!Homebrew4.0进行了一项最大的改动,组织方式从Git仓库管理改为JSON文件下载。JSON配置文件会从formulae.brew.sh下载,本地的homebrew/core、homebrew/cas......
  • 【Python】pandas 将某列相同值作为index, 整合数据
    pd.pivot_table#dfvalueUpdateTimefactorNamevalue02023-03-2808:00:18.532805风向147.6912023-03-2808:00:18.532805气压101.7122023-03-2808:00:18.532805风速0.2832023-03-2808:00:18.5328......
  • 动态规划——经典问题的实现(Python)
    动态规划(dunamicprogramming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。将复杂的多段决策问题分解为若干相互关联的子决策问题以获得最优决策序列的方法,是由美国数学家贝尔曼(R.E.Bellman)于20世纪50年代提出,它的基本原理是贝尔曼在《动态规划》(1957年)一书中所提出的最......
  • python3语法
    1、编码默认情况下,Python3源码文件以UTF-8编码,所有字符串都是unicode字符串。指定不同编码:#-*-coding:cp-1252-*-2、标识符(1)首字符必须是字母或下划线(2)标识符其他字符由数字、字母和下划线组成(3)标识符对大小写敏感(4)Python3中,可以用中文作为变量名,非......
  • Python学习笔记一:列表
    一.列表1.定义列表,是由一系列按照特定顺序排列的元素组成的一个有序集合。其中可以包含字母,数字,或者其他任何元素,每一个元素之间不一定有关系。不过,在创建列表时,建议还是将相同类型的元素或者相互之间有关联的元素放在一个列表中。鉴于包含的元素的数量,通常在给列表......