我正在使用CANoe工具进行CAPL脚本编写 .
我已经将此链接提供给Vector提供的帮助:https://vector.com/portal/medien/cmc/application_notes/AN-IND-1-011_Using_CANoe_NET_API.pdf
现在我在步骤或部分面临问题:2.7调用CAPL函数 . 没有语法错误,但我认为,代码无法从CAPL文件中检索函数,因为当我从C#代码向函数传递值时会出现此错误 .
Error statement:
System.Core.dll中出现“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”类型的异常但未在用户代码中处理附加信息:无法将null转换为“int”,因为它是不可为空的值类型如果有这个例外的处理程序,程序可以安全地继续 .
Can some one tell me what exactly the issue is?
码:
public void Init()
{
CANoe.Application myApp;
myApp = new CANoe.Application();
CANoe.Measurement mymeasure;
mymeasure = (CANoe.Measurement)myApp.Measurement;
myApp.Open(@"D:\Planter CAPl\CANoeCAPLdll.cfg", true, true);
CANoe.OpenConfigurationResult ocresult = myApp.Configuration.OpenConfigurationResult;
if (ocresult.result == 0)
{
CANoe.CAPL CANoeCAPL = (CANoe.CAPL)myApp.CAPL;
CANoeCAPL.Compile(null);
CANoe.CAPLFunction mydata;
mydata = (CANoe.CAPLFunction)CANoeCAPL.GetFunction("Data");//CANoeCAPL.GetFunction("DataShare");
mymeasure.Start();
Thread.Sleep(2000);
int Result = (int)mydata.Call(10,20,30);// Exeception error is coming at this point*
if (mymeasure.Running)
{
mymeasure.Stop();
}
}
}
1 回答
我认为错误消息相对不言自明,您正在尝试将
null
值转换为int
类型 . 由于int
是值类型,因此不能null
,因此,您会收到异常 .在线
mydata.Call(10,20,30)
返回的值是null
. 您应该检查该值是否为null并执行某些操作 .至于为什么调用
Call
方法返回null
,你'll have to check the API you'重新使用 .