我目前正在使用 CAPL 语言在 CANoe 中开发测试用例。我的目标是捕获并保存迹线上出现的整个 CAN 帧,而不仅仅是它包含的信号。虽然我了解如何使用 on message{} 事件在网络节点中完成此操作,但我在测试用例中实现此操作时遇到了困难。具体来说,我的目标是执行测试用例,检索 CAN 帧的当前值,并继续执行预期的测试程序。任何有关在 TestCase 环境中实现此功能的见解或建议将不胜感激。
我最初尝试使用 CANoe 系统变量,但发现它很麻烦,因为需要为每个 CAN 帧创建大量系统变量。事实证明,这种方法对于我的要求来说效率低下。
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
如果您想处理某种消息类型,您可以使用上述函数的重载之一。