request - 如何在 Vector CAPL 中发送多个 diagRequest 消息?
问题描述
我目前正在编写一些在单击按钮时执行的 CAPL 代码。它应发送多个诊断请求。但 CANoe 总是告诉我,它一次只能发送一个请求。所以我需要延迟请求。该diagSetRequestInterval
功能不起作用。而且由于它不是测试用例,因此testWaitForDiagResponse
也不起作用。
解决方案
您必须等到请求被处理(通过来自目标的响应或超时)。
由于您不在测试节点中,您必须将控制权交还给系统,即您的功能diagSendRequest
将结束,您等待总线上的某些事件发生后再继续(否则模拟将停止)。
一旦请求被处理on diagRequest ...
,就会被调用。在这个事件过程中,你可以发送下一个请求等等。
例子:
代替:
myFunction()
{
diagRequest ECU.ProgrammingSession req1;
diagRequest ECU.SecuritySeed req2:
diagSendRequest(req1);
diagSendRequest(req2);
}
你会做这样的事情:
myFunction()
{
diagRequest ECU.ProgrammingSession req1;
diagSendRequest(req1);
}
on diagResponse ECU.ProgrammingSession
{
diagRequest ECU.SecuritySeed req2:
diagSendRequest(req2);
}
超时处理是一个不同的主题,作为练习:-)
推荐阅读
- javascript - 在 Excel Javascript 中删除和替换工作表而不破坏对它的引用
- c# - 以 C# 形式运行批处理文件
- java - 为什么 yield 一个线程可以解决 Java 中的线程可见性问题
- javascript - 在另一个 setstate 的回调中设置状态
- flutter - 如何使用 StreamBuilder 使用列表的长度作为流?
- python - 破折号应用程序上的heroku上的错误H13
- java - 在 Java 中使用 org.json.simple 解析不带引号的 JSON 键
- reactjs - Ant设计表行合并基于数据而不是索引值
- reactjs - 更改挂钩元素时组件不会更改
- pip - 找不到包“dbus-1”