使用Python访问CANoe COM接口实践
CANoe COM Server
& Python pywin32
COM Object Hierarchy
要想设置CommunicationSetup,就需要按照Application->Configuration->CommunicationSetup从左向右的层级顺序,找到相应的属性或是方法,从而实现设置。
Type Library
在CANoe软件安装目录下(默认为C:\Program Files\Vector CANoe 14)的Exec32\COMdev目录中包含了注册COM所用的类型库,如下图所示CANoe.h头文件:
可以看到,ITestConfiguration2继承自ITestConfiguration,在它的基础上又扩充了许多方法,比如获取TestConfigurationSettings对象的方法get_Settings就在其中。
也就是说,要通过实现了ITestConfiguration2接口的TestConfiguration对象的get_Settings方法,才能获得TestConfigurationSettings对象。
为此,通过win32com.client模块中的CastTo方法,能将TestConfiguration转换成基于ITestConfiguration2接口的对象。
COM Object
COM Object Hierarchy中有许多COM对象,短时间内掌握所有COM对象是不现实的,下面仅针对常用的、与自动化测试紧密相关的COM对象做介绍。
Application
使用Python控制CANoe,首先要获取关联整个CANoe进程的COM对象,也就是Application对象。通过Dispatch方法就可以获得关联到当前CANoe进程的COM对象,如果当前并没有CANoe进程,则会启动一个CANoe进程;而如果想要另外获得一个CANoe进程,则可以使用DispatchEx方法。
Measurement
要想控制CANoe启动测量,就需要获取Measurement对象,对于上面获得的Application对象,使用self.App.Measurement获得。
下面是启动CANoe测量的代码示例:
System Variables
系统变量作为CANoe中重要的部分,要想获取任意系统变量的值,就要获取对应系统变量的对象。
下面是获得系统变量值的代码示例:
Test Configuration & Test Unit
与自动化测试(这里仅介绍Test Configuration配置,即与vTESTstudio软件联合使用的自动化测试)直接相关的就是Test Configuration以及Test Unit,前者对应整个测试执行的设置,后者包含具体执行的测试用例。在COM Object Hierarchy中可以看到,它们的层级构成为Application->Configuration->TestConfigurations->TestConfiguration->TestUnits->TestUnit:
其中,TestConfigurations与TestUnits跟前文类似,表示TestConfiguration和TestUnit的集合,同样可以通过索引访问。除了可以使用相应TestConfiguration(TestUnit)名称作为索引以外,还能使用数字索引,但是切记索引起始为1。对于仅有一个TestConfiguration的情况,仅需要TestConfigurations(1)来获得唯一的TestConfiguration对象。
可以看到Add方法能添加相应的对象,对于TestConfigurations.Add()不需要其他参数,即可添加并获得新的TestConfiguration对象;而TestUnits.Add()需要提供所要添加的TestUnit的绝对路径,同样可以获得对应的TestUnit对象。另外值得注意的是,TestUnits的Add方法是在ITestUnits2接口上扩展的,所以要通过前文所述的CastTo方法将TestUnits (默认为基于ITestUnits接口)转换成基于ITestUnits2的对象。
加载测试配置后,还需要启动测试执行,查看ITestConfiguration接口定义,可以发现Start方法:
下面是执行测试的代码示例(这里使用了之前保存的类成员self.test_config):
执行完测试后,需要获得测试结果,可以通过CANoe软件为Test Configuration创建的系统变量VerdictSummary查看:
Test demo
这个demo中有更丰富的COM对象的应用、更完善的信息提示,比如对测试启动、停止等事件的控制,对CANoe运行状态的打印,在此不再赘述。
总结
CANoe是德国Vector公司出的一款总线开发环境,是网络和ECU开发、测试和分析的专业工具,支持从需求分析到系统实现的整个系统开发过程;其丰富的功能和配置选项被OEM和供应商的网络设计工程师、开发工程师和测试工程师所广泛使用。
本文部分图片来自Vector。
﹀
﹀
﹀
微信ID:Polelink_Info