使用 CAPL 语言捕获 CANoe 测试用例中的整个 CAN 帧

问题描述 投票:0回答:1

我目前正在使用 CAPL 语言在 CANoe 中开发测试用例。我的目标是捕获并保存迹线上出现的整个 CAN 帧,而不仅仅是它包含的信号。虽然我了解如何使用 on message{} 事件在网络节点中完成此操作,但我在测试用例中实现此操作时遇到了困难。具体来说,我的目标是执行测试用例,检索 CAN 帧的当前值,并继续执行预期的测试程序。任何有关在 TestCase 环境中实现此功能的见解或建议将不胜感激。

我最初尝试使用 CANoe 系统变量,但发现它很麻烦,因为需要为每个 CAN 帧创建大量系统变量。事实证明,这种方法对于我的要求来说效率低下。

can-bus capl canoe
1个回答
0
投票

CANoe 的测试功能集提供了

testWaitFor...
等用于等待某个事件的功能以及
testGet...
等用于检索数据的功能。

在您的情况下,您可以使用

testWaitForMessage
等待,直到在总线上看到 CAN 消息,然后使用
testGetWaitEventMsgData

在您的问题中,您没有指定您是否要对特定消息或任何消息采取行动。

假设是后者,你的代码可能如下所示:

long result;
message * MyMessage

result = testWaitForMessage(10000 /* timeout */);
if(result < 0) {
  return;
}

result = testGetWaitEventMsgData(MyMessage);
if(0 != result) {
  return;
}
// process MyMessage

如果您想处理某种消息类型,您可以使用上述函数的重载之一。

© www.soinside.com 2019 - 2024. All rights reserved.