首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要将数据从CAPL写入C#代码并读取回CAPL脚本

需要将数据从CAPL写入C#代码并读取回CAPL脚本
EN

Stack Overflow用户
提问于 2018-04-30 09:27:54
回答 1查看 1.9K关注 0票数 0

我正在使用CANoe工具编写CAPL脚本。

我参考了下面的链接,以寻求向量:API.pdf提供的帮助

现在我面临的问题是步骤或部分: 2.7调用CAPL函数。没有语法错误,但我认为,代码无法从CAPL文件中检索函数,因为当我从C#代码将值传递给函数时,它会产生此错误。

错误声明:

'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException‘类型的异常发生在System.Core.dll中,但未在用户代码中处理 附加信息:无法将null转换为'int‘,因为它是非空值类型。 如果存在此异常的处理程序,则可以安全地继续该程序。

,有人能告诉我到底是什么问题吗?

代码:

代码语言:javascript
复制
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();
         }
   }
}
EN

回答 1

Stack Overflow用户

发布于 2018-04-30 11:16:00

我认为错误消息相对来说是不言自明的,您正在尝试将null值转换为int类型。因为int是一个值类型,所以它不能是null,因此,您将得到一个异常。

排在队伍里

代码语言:javascript
复制
int Result = (int)mydata.Call(10,20,30);

mydata.Call(10,20,30)返回的值是null。您应该检查该值是否为null,并执行一些操作。

代码语言:javascript
复制
var myDataResult = mydata.Call(10,20,30);
if(myDataResult == null)
   // do something
else
   int result = (int)myDataResult;

至于为什么调用Call方法返回null,您必须检查正在使用的API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50097619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档