问题一
在加载测试testModule时,DispatchWithEvents处理com对象事件报错。
self.Events = DispatchWithEvents(tm, CanoeTestEvents)
解决
🦁 在帮助文档中,TSTestModule对象支持事件触发,并且尝试了所有版本的接口,所以代码没有问题。
🦁 最后找到解决方法:删除makepy.py运行时注册CANoe Type Library创建的Python文件,Temp\gen_py
🦁需要注意,删除文件后,不再需要转换对象。但是,CANoe.Application 对象需要使用Dispatch
或DispatchEx
进行实例化。
错误原因
之前电脑装了很多版本,就算把其他版本删了com对象也没有读到正确的版本,删了过后再从新加载读取到正确版本。
问题二
调用COM对象接口时,会有不支持此属性的错误,用CastTo函数强制转化成最新版本接口。
testenv = CastTo(testenv, "ITestEnvironment2")
canoe所有接口可以在canoe15\Exec32\COMdev\CANoe.h
中查看,接口的属性方法也可以查看。
错误原因
接口有很多版本,有的脚本没有用最新的,就会出现不支持某些属性。转换成最新的接口额版本呢就可以。