将CANoe COM服务器与C#一起使用时出现问题

时间:2019-03-26 04:24:42

标签: c# com canoe

我试图通过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)都将导致相同的错误。配置确实打开,但此后什么也没有。

关于为什么发生这种情况的任何想法吗?

1 个答案:

答案 0 :(得分:0)

您不能创建自由浮动的空CAPLFunction对象。

CAPL功能必须存在于刚打开的Config中。之后,您可以通过

var caplFunc = CANoe_big.CAPL.GetFunction("<functionname>");

您可以通过调用

执行它
caplFunc.Call(...);

检查CANoe文档中称为技术参考-> COM接口-> 对象层次结构的部分。