我试图通过C#中的CANoe-COM服务器在特定的CANoe配置中执行一些CAPL功能。但是我遇到了错误。
在这里,我要在CANoe-COM服务器中声明两个类的对象:按应用程序(打开CANoe配置)和CAPLFunction(在Configuration上运行某些CAPL函数,例如,打开面板)简单Windows窗体中的按钮的图标。代码如下:
onSubmit = e => {
e.preventDefault();
this.setState(
{
text: this.state.text,
items: [...this.state.items, this.state.text]
},
() => console.log(this.state.items)
);
};
当我在Visual Studio中键入这些函数时,没有指示错误。即使在运行程序时,窗体也会显示,并且在单击按钮时,也会打开配置“ All_Neu.cfg”。但是之后,系统抛出此错误:“类未注册,HRESULT:REGDB_E_CLASSNOTREG”。并且突出显示了在抛出错误的同时声明CAPLFunction对象的行。
哪个奇怪,因为应该没有问题吧?我的意思是,CANoe配置正确打开,因此CANoe-COM服务器处于运行状态。
事实上,我注意到COM服务器中任何其他类的对象(如Bus或Write)都将导致相同的错误。配置确实打开,但此后什么也没有。
关于为什么发生这种情况的任何想法吗?
答案 0 :(得分:0)
您不能创建自由浮动的空CAPLFunction对象。
CAPL功能必须存在于刚打开的Config中。之后,您可以通过
var caplFunc = CANoe_big.CAPL.GetFunction("<functionname>");
您可以通过调用
执行它caplFunc.Call(...);
检查CANoe文档中称为技术参考-> COM接口-> 对象层次结构的部分。