当Python遇到CANoe

Python是一种面向对象的解释型计算机程序设计语言,具有丰富、强大的函数库,目前已成为继JAVA、C++之后的第三大语言,并被广泛应用于Web开发、人工智能、数据挖掘和科学计算等领域。作为一种扩展性极强的“胶水型”编程语言,Python还可以和Matlab、Labview等第三方软件无缝集成。那么当汽车电子通信分析软件CANoe和Python结合使用时会碰撞出怎样的火花?测试“攻城狮们”会有哪些奇思妙想呢?

 

 

软件安装

1、Python IDE安装

进入Python官网下载标准IDE:https://www.python.org。这里面版本会随时更新,推荐新手使用(比较容易上手)。当然网上也有推荐的其它IDE环境比如PyCharm、Visual Studio也不错,根据个人习惯使用。

 

Python IDE安装

 

2、Win32 COM库安装

A)在调用CANoe的过程中会用到win32的COM组件库,需要提前下载并安装,否则程序会报错,找不到win32api模块。(如下图)

 

win32api报错

 

B)在cmd命令行窗口中进入python程序安装路径,键入命令pip install pypiwin32进行安装。
 

安装Python win32 COM插件

 

Python调用CANoe思路

1、基于COM接口调用CANoe - 把CANoe当做COM Server,访问相应对象的属性、方法和事件。

 

COM对象树

 

2、遍历对象树,根节点—子节点—次子节点—······,直至最底层节点,先新建Application对象即根节点CANoe,然后逐级访问Measurement、Environment、Configuration、CAPL等子节点对象,基于子节点对象比如Configuration继续逐级访问其次级子节点对象,比如Test Setup。

 

CANoe COM对象遍历思路
 

 

Python调用CANoe步骤

以CANoe自带Demo为例来分析,默认路径如下:

 

Python调用CANoe Demo路径

 

注意:这个CANoe工程包含了Test Module 和Test Unit。

 

CANoe工程框架

 

OK,下面开始详解调用步骤。

 

01、实例化Application对象(即CANoe工程)。

 

Application对象实例化

 

02、调用Application对象的Open方法,打开相关CANoe工程(注:这里建议使用相对路径,便于工程在不同文件夹之间复制)。
 

打开CANoe工程

 

03、加载Test Module,对象搜索路径:App – Configuration –TestSetup – TestEnvironments – Add()。

 

Test Module加载
 

04、加载Test Unit(基于vTESTstudio生成),对象搜索路径:App – Configuration –TestConfigurations - Add()。

 

Test Unit加载
 

05、启动CANoe工程,调用Measurement对象的Start方法。

 

启动CANoe工程

 

06、启动测试节点,调用TestModule对象的Start方法。

 

启动Test Module

 

07、启动测试单元,调用TestConfiguration对象的Start方法。

 

启动Test Unit
 

08、主线程挂起,等待CANoe测试执行完毕(注:这里用到了pythoncom库里的API - PumpWaitingMessages),测试界面中弹出CANoe相关运行消息。

 

主线程挂起等待

 

09、停止CANoe工程,调用Measurement对象的Stop方法。

 

停止CANoe工程

 

调用主流程如下,可以看到使用Python可以写出非常轻量级的代码。

 

调用主流程

 

知识点来啦——敲黑板!!!

1、在代码开始时需要进行库文件导入(import关键字),否则相关win32com API无法被正常调用。

 

库文件调用

 

2、加载CANoe工程速度分析,若当前没有CANoe工程打开,则载入工程速度较慢,大约20~40s左右;若当前已有任意CANoe工程打开,则Python能在2s左右加载指定路径的CANoe工程。所以只有第一次打开工程费点时间,后续基本上可以实现秒开。
 

CANoe工程打开速度分析

 

3、搞清楚COM对象之间的包含关系,对于编程来说事半功倍。
 

COM对象包含关系
 

更多可能性······

1、对上述Demo稍作修改(重新赋值.cfg的调用路径),就可以调用CANoe的其它Demo了,比如Central Locking System。

Python调用Central Locking System Demo

 

2、除了Python之外,其它编程语言比如C/C++, C#, VBS, VBA, VB, Delphi, JScript, Perl等等,都可以基于COM接口调用CANoe工程。

 

总结

1、Python调用CANoe可以快速创建&修改CANoe工程配置,实现CANoe运行自动化(工程加载,启动/停止测量),可以自动执行测试序列(Test Module/Test Unit)。
 

2、使用Python调用CANoe,测试人员无需对CANoe进行细节配置,全部由脚本自动生成,适用于重复型工作;运行一次Python脚本等于点十几次鼠标配置CANoe工程,测试工程师开发好测试脚本,可交给产线工人直接运行。


3、要善于通过COM对象树分析各个对象的关系,调用相关对象的属性、事件和方法。


4、基于COM接口调用CANoe的方法也可以应用于其它第三方上位机编程语言。

 

OK,今天的干货分享就到这里,估计不少路过的Python高手已经开始跃跃欲试了,希望大家多思考,大开脑洞,和我们一起挖掘CANoe这个宝藏。如果大家对Vector工具的使用有任何疑问,可以发邮件到support@e-planet.cn,我们会有技术工程师在线答疑,欢迎大家一起讨论。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值