本文面向汽车电子总线自动化测试场景,介绍基于Python调用INTEWORK-VBA总线工具COM API接口的集成方案:以Python作为上层测试逻辑开发与调度核心,依托Windows原生COM组件调用机制,直接访问VBA总线工具开放的COM接口,调用其已封装成熟的CAN/LIN/CANFD/车载以太网多协议适配、硬件驱动兼容、数据收发、协议解析、故障注入、负载模拟等总线能力,实现Python侧对总线测试流程的自定义控制与实时数据获取。COM API详细接口定义及使用规范可在开发指南--软硬件API接口文档下载中下载查看,适配研发台架自定义测试、产线自动化下线检测、科研项目总线功能验证等多类场景需求。
关键词:Python调用,VBA,logger启停
环境配置
1、安装所需python 库
下载win32类库:pip install pywin32
2、连接 VBA测试
打开VBA,在pycharm等IDE中执行如下代码:
import win32com.client
VBA = win32com.client.Dispatch("VBACOM")
若无异常报错,则执行正确,完成连接。
3、异常情况
1) pywintypes.com_error: (-2146233088, 'OLE error 0x80131500', None, None)
错误原因:VBACOM执行需要的DLL未成功注册。

解决办法:a.若VBA根目录\Exec\DLL文件夹中没有RegAsm_VBA_API.bat文件,则根据以下内容创建:
@echo off
set "path=%~dp0"
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /unregister "%path%\VBACOMAPI.dll"
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /unregister "%path%\VBACOMAPI.dll"
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase "%path%\VBACOMAPI.dll"
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /codebase "%path%\VBACOMAPI.dll"
pause
b.RegAsm_VBA_API.bat——>右键 ——>以管理员权限执行, 弹出下图注册成功。

2)系统找不到指定的文件:

检查版本是否为VBA 2.2.0以上:2.2.0以下版本不支持;
检查VBA根路径下\\Exec\\DLL文件内是否有文件:VBACOMAPI.dl,若没有重新解压安装,或复制一份该文件。
Demo实例
本示例是一个基于Python开发的Demo,主要用于展示如何通过编程方式对VBA总线工具的Logger功能进行启动与停止控制。该Demo通过调用VBA提供的COM API接口,实现了对CAN总线数据记录过程的自动化管理。
导入执行所需库:
import time
import win32com.client
import os
启动VBA软件,配置VBA工作空间、工程名字以及logger模块:
vba = win32com.client.Dispatch("VBACOM")
workspacePath = "D:\\VBAproject"
vba.open(workspacePath)
project = vba.getProjectByName("test_api")
loggerModule = project.getLoggerModule()
设置logger保存路径,类型支持asc和blf:
path = "D:\\FAE\\05_COMapi\\0x190.asc"
if not os.path.exists(path):
os.makedirs(path)
print(f"路径 {path} 不存在,已创建。")
else:
print(f"路径 {path} 已存在。")
修改logger中需要保存的报文信息:
ids = [0x190]
channels = ["CAN1","CAN2"]
运行VBA工程:
project.start()
开始Logger采集:
res = loggerModule.startLogger(channels, ids, 0, path)
print(res)
time.sleep(10)
id = res.getInfo()
停止logger采集:
res = loggerModule.stopLogger(id)
print(res)
停止VBA工程:
project.stop()
执行后,会将logger保存到指定路径下:
Python通过调用INTEWORK-VBA总线工具提供的COM API接口,实现了对总线通信的自动化控制与数据交互。该方法借助pywin32等第三方库,能够便捷地访问VBA注册的COM组件,从而完成通道的启停控制、报文发送与接收的自动化管理等核心功能。不仅提升了脚本的可复用性和可维护性,也为总线测试、数据采集和自动化验证提供了灵活高效的解决方案,显著提升了测试效率与流程的自动化水平。