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

标签 c++ c linux can-bus socketcan

我正在使用 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/

相关文章:

c++ - 这个 min() 函数是如何工作的?

c++ - 强制将一个包含文件包含在另一个文件之前

c++ - 返回字符串引用的函数 C++

c - gcc 版本 4.6.3 上的 c 程序汇编版本

c++ - [OpenCL] 使用欧氏距离的最近邻

java - 在 MacOS 上设置 JAVA_HOME 和 PATH

c++ - 打印给定列和行约束的交替 X 和 O 矩阵?

c - 如何在 ANSI C 中确定变量是否无符号

php - 为什么mkdir模式参数以0开头?

linux - 从/var 开始的 bitbucket 存储库