获取 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
是必需的。它将阻止您无限期地重新传输相同的消息。
我刚刚在 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
是必需的。它将阻止您无限期地重新传输相同的消息。