【问题标题】:How to create a stop-filter (instead of a pass-filter) when reading CAN messages? [C++, Linux]读取 CAN 报文时如何创建停止过滤器(而不是通过过滤器)? [C++、Linux]
【发布时间】:2019-04-11 16:00:30
【问题描述】:

我正在使用 SocketCAN 来访问 CAN 总线。 我已经成功地创建了这样的过滤器:

struct can_filter m_Filter;
// ... setting up m_Filters
setsockopt(m_CanSockId, SOL_CAN_RAW, CAN_RAW_FILTER, m_Filter,
           sizeof(struct can_filter));

这指示在满足过滤器设置时让 CAN 消息通过。

现在我想创建一个停止过滤器,但我不知道该怎么做。 例如:我希望所有 CAN 消息都通过,除了 ID 为 0x18DAF101 的消息。

有人知道怎么做吗?

【问题讨论】:

  • 向我们展示您的尝试?
  • 我查看了这个文档link 没有找到任何可以尝试的东西,这就是我在这里问的原因。

标签: c++ c linux can-bus socketcan


【解决方案1】:

您必须在过滤器中设置位 CAN_INV_FILTER 以反转过滤器逻辑。

从您提供的链接后面的文档中:

当 CAN_INV_FILTER 位在 can_filter 结构的 can_id 元素中设置。

【讨论】:

  • 谢谢!我会尽快检查,但我已经相信这是我需要的!
猜你喜欢
  • 1970-01-01
  • 2022-11-11
  • 2017-07-29
  • 2020-10-24
  • 2013-07-28
  • 2022-07-15
  • 2020-04-27
  • 2017-09-01
  • 1970-01-01
相关资源
最近更新 更多