如何在读取CAN消息时创建停止过滤器(而不是通过过滤器)? [C ++,Linux]

问题描述 投票:0回答:1

我正在使用SocketCAN来访问CAN总线。我已经成功创建了这样的pass-filters:

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的消息除外。

有谁知道怎么做?

c++ c linux can-bus socketcan
1个回答
0
投票

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

从您提供的链接背后的文档:

当在can_filter结构的can_id元素中设置CAN_INV_FILTER位时,可以在此语义中反转过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.