我正在使用 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 的报文。
有人知道怎么做吗?
最佳答案
您必须在过滤器中设置位 CAN_INV_FILTER
以反转过滤器逻辑。
根据您提供的链接背后的文档:
The filter can be inverted in this semantic, when the CAN_INV_FILTER bit is set in can_id element of the can_filter structure.
关于c++ - 读取 CAN 消息时如何创建停止过滤器(而不是通过过滤器)? [C++, Linux],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55636741/