【发布时间】:2018-04-30 09:27:54
【问题描述】:
我正在使用 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# 代码传递给函数时,它会给出此错误。
错误说明:
类型异常 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' 发生在 System.Core.dll 但未在用户代码中处理
附加信息:无法将 null 转换为 'int',因为它是 不可为空的值类型
如果有这个异常的处理程序,程序可以安全地继续。
谁能告诉我到底是什么问题?
代码:
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();
}
}
}
【问题讨论】: