1. 项目执行前提
- 操作系统必须问 Windows,且已安装 CANoe。
- 项目目录下需要有 CANoe 封装类。核心封装文件是:class_canoe_com.py ,需将该文件放入你的项目目录中。
- CANoe 的 COM Server 需要已正确注册(可以打开 Vector Tool Manager 查看或配置)。正常安装 CANoe 后通常已经具备该能力。
- class_canoe_com.py 使用了 win32com.client,它来自第三方库 pywin32,需安装:
pip install pywin32
- 需要一个可打开的 CANoe cfg 工程文件。
- Cfg 工程中需配置 measurement start 之后自动 start test module:
a. 在工具栏点击Test -> Test Setup打开“Test Setup for Test Modules”窗口
b. 选中某个test module,右击,选择“Configuration…”
c. 在弹出的Configuration窗口中选择start immediately。如图所示还可以通过控制环境变量等方法来使test module运行,方法灵活可自行选择。

2. 最小可行性代码
/项目目录
├ class_canoe_com.py # COM 接口调用封装
⎿ py_execution.py # 执行业务逻辑
import time
from class_canoe_com import CANoe
cfg_path = r"C:\your\canoe\project\example.cfg"
app = CANoe() # 创建实例
app.open_cfg(cfg_path) # 打开你的cfg文件
time.sleep(5) # 延迟时间可自行调整
app.start_Measurement() # cfg 工程 start measurement,由于上文配置,test module 已自动执行
while app.application.Measurement.Running:
status = app.get_SysVar("TestModule", "TestModuleStatus") # 下方有详细说明
# 如果 test module 运行完毕, stop measurement
if status == 3 or status == 4:
time.sleep(10)
app.stop_Measurement()
break
time.sleep(5)
app.close_cfg()
有关通过 TestModuleStatus 系统变量获得 test module 状态的详细方法说明:
- 新建一个系统变量
- 在 test module configuration 窗口中,“Test Module State:” 项中绑定刚才建的系统变量

- 绑定的变量用于反应test module的状态值,状态值共有5种,可在vector官网help(搜索Test Module Configuration Dialog)中找到具体定义:

- python中,监控此状态变量并获得test module测试结束时间点,然后stop measurement:(注意前后的 time sleep,practice 过程中可能还需要调整延时时间长短,否则可能会出现get不到正确的状态值)
3. 核心原理
这个示例不是直接实现 CANoe 内部调用的逻辑,而是通过 Windows COM 自动化接口控制 CANoe 软件。
本项目中的封装类位于 class_canoe_com.py:
from win32com.client import *
self.application = DispatchEx("CANoe.Application")
DispatchEx("CANoe.Application") 会启动一个 CANoe 应用实例。后续 Python 代码通过这个实例调用 CANoe 暴露出来的 COM API,例如:
- 打开 CANoe 工程:
application.Open(cfgname) - 启动 Measurement:
application.Measurement.Start() - 停止 Measurement:
application.Measurement.Stop() - 读取 System Variable:
application.System.Namespaces(...).Variables(...).Value - 关闭 CANoe:
application.Quit()
也可不使用封装类文件,方法灵活可自行选择。