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