我试图通过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,都会导致相同的错误。配置确实打开了,但之后什么都没有。
关于为什么会发生这种情况的任何想法?
您无法创建自由浮动的空CAPLFunction对象。
CAPL功能必须出现在刚刚打开的Config中。之后你可以得到它
var caplFunc = CANoe_big.CAPL.GetFunction("<functionname>");
然后,您可以通过调用执行它
caplFunc.Call(...);
检查CANoe文档中名为Technical References - > COM Interface - > Object Hierarchy的部分。