首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有comtypes的CANoe中运行CAPL函数会出现一个错误

在带有comtypes的CANoe中运行CAPL函数会出现一个错误
EN

Stack Overflow用户
提问于 2020-02-25 14:24:45
回答 1查看 1K关注 0票数 1

现在,我正尝试使用python包在CANoe中使用CANoe COM调用CAPL函数。

为此,我创建了以下简短的python程序:

代码语言:javascript
复制
from comtypes.client import CreateObject
c=CreateObject("CANoe.Application")
squareFunction=c.CAPL.GetFunction("square")
res=squareFunction.Call(5)
print(res==25)

这应该调用我的短CAPL函数:

代码语言:javascript
复制
int square(int x) {
   return x*x;
}

不幸的是,该程序在c.CAPL.GetFunction("square")中产生一个异常,以防模拟在CANoe中运行。

代码语言:javascript
复制
COMError: (-2147418113, 'Critical Error', (None, None, None, 0, None)) 

如果停止了CANoe中的仿真,就不会出现错误,但是函数的调用会产生None

有人知道吗,这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-26 10:22:31

首先,确保您的函数是在测量-设置中的CAPL块中定义的,而不是在模拟-设置中定义的。

应用程序说明CANalyzer/独木舟作为COM服务器由向量链接在第15页中声明:

将CAPL函数分配给变量只能在度量对象的OnInit事件处理程序中完成。

也就是说,您的squareFunction变量必须在OnInit事件期间初始化。与此类似:

代码语言:javascript
复制
def OnInit():
  self.squareFunction = c.CAPL.GetFunction("square")

c.Measurement.OnInit += CANoe._IMeasurementEvents_OnInitEventHandler(self.OnInit)

这样,OnInit将在度量init期间执行,以后可以执行self.squareFunction.Call(5)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60396806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档