首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CAPL函数"TestWaitForDiagRequestSent“的替代方案

CAPL函数"TestWaitForDiagRequestSent“的替代方案
EN

Stack Overflow用户
提问于 2019-03-22 17:51:53
回答 1查看 557关注 0票数 0

我正在寻找CAPL中的一个函数,它提供与上面提到的函数相同的功能。

此函数用于等待诊断请求是否成功发送的确认。传入的参数是DiagRequest对象和特定的等待时间。如果在此时间段结束时未收到确认,则返回与超时对应的错误代码。另一个错误代码也指失败的其他原因,如协议错误等。

我对这个已建立的"TestWaitForDiagRequestSent“函数的主要问题是,它只能在测试用例结构中使用,该结构可以通过CANoe中的模拟设置中的CAPL、XML或.NET测试模块来实现。我需要实现相同的功能,而不必使用测试模块。

有没有人能推荐另一个不含Test Modules的CAPL函数来做同样的工作,或者建议一个实现这一目标的实用方法?

EN

Stack Overflow用户

回答已采纳

发布于 2019-03-22 18:34:25

允许测试模块在模拟期间“等待”。

所有其他节点或功能都不允许等待,因为这会阻塞模拟。基本上,模拟调用CAPL-function并等待,直到函数返回。在函数返回之前,不会处理总线上的任何事件。

有一个事件处理程序,当诊断请求成功发送时将调用该事件处理程序。因此,您必须将代码分解为发送请求,方法是使用

代码语言:javascript
复制
diagSendRequest(req)

并对成功的发送做出反应,方法是使用

代码语言:javascript
复制
on diagRequestSent <service>
{
  ...
}

为了成功地对请求做出反应,您可以使用计时器并相应地设置一个全局变量,也可以设置一个系统变量。

类似下面的内容就可以了。

代码语言:javascript
复制
variables
{
  timer requestTimer;
  int sentSuccessfully;
}

void sendRequest()
{
  ....
  sentSuccessfully = 0;
  diagSendRequest(req);
  setTimer(requestTimer, <timeout>);

}

on diagRequestSent ....
{
  sentSuccessfully = 1;
  cancelTimer(requestTimer);
}

on requestTimer 
{
  sentSuccessfully = -1;
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55296954

复制
相关文章

相似问题

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