我只是在学习使用CAPL
,CANoe
我需要创建一个网关来过滤 2 个 CAN 总线之间的消息。
对于第一部分,我需要创建一种方法来将传输从总线 1 切换到总线 2,反之亦然(已经完成)。
然后我必须能够从任何总线中选择一条特定的消息,将其发送到另一条总线。所有这些都必须通过面板以图形方式进行,我使用复选框来切换第 1 部分和下拉列表用于消息过滤器。
您是否知道从最后(例如 10 秒)获取总线中活动(Rx/Tx)消息列表的方法?(我知道我必须使用计时器来调用更新函数)
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
,反之亦然。它将阻止您无限期地重新传输相同的消息。