-1

我正在尝试通过 C# 中的 CANoe-COM 服务器在特定的 CANoe 配置中执行一些 CAPL 函数。但我遇到了错误。

在这里,我在 CANoe-COM 服务器中声明两个类的对象:应用程序(打开 CANoe 配置)和 CAPLFunction(在配置上运行一些 CAPL 功能,比如打开一个面板),按下按钮在一个简单的 Windows 窗体中。代码如下:

    private void button1_Click(object sender, EventArgs e)
    {
        CANoe.Application CANoe_big = new CANoe.Application();
        CANoe_big.Open(@"All_neu.cfg");

        CANoe.CAPLFunction Neu = new CANoe.CAPLFunction();

    }

当我在 Visual Studio 中输入这些函数时,没有显示任何错误。即使在运行程序时,表单也会显示,并且在单击按钮时,配置“All_Neu.cfg”也会打开。但在那之后,系统抛出这个错误:“类未注册,HRESULT:REGDB_E_CLASSNOTREG”。它在抛出错误时突出显示声明 CAPLFunction 对象的行。

这很奇怪,因为应该没有问题,对吧?我的意思是,CANoe 配置正确打开,所以 CANoe-COM 服务器是活跃的。

事实上,我注意到 COM 服务器中任何其他类的任何对象,如 Bus 或 Write,都会导致相同的错误。配置确实打开了,但在那之后,什么也没有。

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

4

1 回答 1

0

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

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

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

然后你可以通过调用来执行它

caplFunc.Call(...);

检查CANoe 文档中名为Technical References -> COM Interface -> Object Hierarchy的部分。

于 2019-03-26T08:29:56.860 回答