获取 CAN 总线中所有活动消息的列表

Getting a list of all active messages in a CAN Bus

我刚刚在 CANoe 上学习使用 CAPL,我需要创建一个网关来过滤 2 个 CAN 总线之间的消息。

对于第一部分,我需要创建一种方法来切换从总线 1 到总线 2 的传输,反之亦然(已完成)。

然后我必须能够 select 从任何一辆公共汽车发送特定消息,将其发送到另一辆公共汽车。所有这些都必须使用面板以图形方式显示,我使用复选框切换第 1 部分,使用下拉列表作为消息过滤器。

您是否知道一种方法可以获取总线中最近(比如 10 秒)的活动消息列表? (我知道我必须使用定时器来调用更新函数)

您可以通过定义 on message 事件处理程序来订阅来自总线的所有消息。将为每条消息调用它(取决于您指定的过滤条件)。您可以通过使用 output.

重新传输消息来创建网关

例如,您的图形面板可以将变量 my_id 设置为您要从总线 1 中继到总线 2 的消息的 ID。然后您可以编写:

on message CAN1.*
{
   message CAN2.* msg;
   if((this.dir == rx) && (this.id == my_id)) {
       msg = this;
       output(msg);
   }
}

如果您想将同一消息从总线 1 中继到总线 2,反之亦然,则附加条件 this.dir == rx 是必需的。它将阻止您无限期地重新传输相同的消息。