在candump的帮助下:
<can_id>:<can_mask> (matches when <received_can_id> & mask == can_id & mask)
现在,当掩码为 0 时,每个 CAN ID 都会匹配它。所以can_id没有实际作用,这就是为什么所有消息都通过,can id中每个需要的位都应该在掩码中设置为1。
关于重复问题,可能是因为您使用了两个过滤器,尽管我对此不确定。
你想做的是:
candump can0,00200200:1fffffff,255:7ff
示例(由 OP 提供):
enyquist:~$ candump vcan0,00200200:1fffffff,255:7ff &
[1] 7339
enyquist:~$ cansend vcan0 002001fe#1122
enyquist:~$ cansend vcan0 002001ff#1122
enyquist:~$ cansend vcan0 00200200#1122
vcan0 00200200 [2] 11 22
enyquist:~$ cansend vcan0 00200201#1122
enyquist:~$ cansend vcan0 00200202#1122
enyquist:~$
enyquist:~$ cansend vcan0 253#1122
enyquist:~$ cansend vcan0 254#1122
enyquist:~$ cansend vcan0 255#1122
vcan0 255 [2] 11 22
enyquist:~$ cansend vcan0 256#1122
enyquist:~$ cansend vcan0 257#1122
enyquist:~$