我试图调用CAPL通用函数(在我的例子中timeNowNS),但我不知道是否可能。在
我使用的是python3.7和Vector canoe11.0。在
连接是使用.NETCANoeAPI完成的。 这就是我获取DLL的方法。在
import clr
sys.path.append("C:\Program Files\Vector CANoe 11.0\Exec64") # path to CANoe DLL Files
clr.AddReference('Vector.CANoe.Interop') # add reference to .NET DLL file
import CANoe # import namespace from DLL file
我成功地打开了独木舟模拟,开始了测量,我可以访问信号,环境变量和系统变量。在
然后我创建了CAPL对象,并尝试使用GetFunction方法来获取CAPLFunction对象,以便调用它。在
^{pr2}$我应该用这个函数得到当前的模拟时间。在
使用上面的代码我得到:
**COMException**: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
at CANoe.ICAPL5.GetFunction(String Name)
我尝试过不同的代码变体,但是没有成功。在
可能是硬件问题吗? 我应该在独木舟模拟中做一些设置吗?在
如果您需要更多信息,请咨询我!提前感谢
更新:在添加CAPL块之后,我添加了一张测量设置的照片
经过长时间的反复尝试和@m-spiller的帮助,我找到了解决办法。在
初始代码有什么问题?
问题是,我试图在度量开始后为变量赋值。
如第2.7章here所述,只能在测量对象的OnInit事件处理程序中对变量赋值。
我添加了这一行,研究文档:
^{pr2}$添加后,在init上执行OnInit函数,并将CAPL函数分配给一个变量,然后我可以使用该变量来调用该函数。在
再次感谢你,@m-spiller!在
您必须编写一个CAPL函数,在该函数中调用
timeNowNS
。然后可以按照您实现的方式从Python调用这个CAPL函数。在GetFunction
仅适用于(用户编写的)CAPL函数。不能直接调用CAPL内部函数(即内置的CAPL函数)。在把这个放到一个CAPL文件中:
从Python中这样调用:
^{pr2}$相关问题 更多 >
编程相关推荐