1

我只是在学习使用CAPLCANoe我需要创建一个网关来过滤 2 个 CAN 总线之间的消息。

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

然后我必须能够从任何总线中选择一条特定的消息,将其发送到另一条总线。所有这些都必须通过面板以图形方式进行,我使用复选框来切换第 1 部分和下拉列表用于消息过滤器。

您是否知道从最后(例如 10 秒)获取总线中活动(Rx/Tx)消息列表的方法?(我知道我必须使用计时器来调用更新函数)

4

1 回答 1

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,反之亦然。它将阻止您无限期地重新传输相同的消息。

于 2016-02-23T11:27:16.610 回答