gpt4 book ai didi

linux - 被 candump (SocketCAN) ID 过滤功能严重混淆

转载 作者:IT王子 更新时间:2023-10-29 01:18:52 25 4
gpt4 key购买 nike

简而言之,我希望 candump 仅向我显示 ID 为 0x00200200 或 0x255 的帧。

所以我这样做:

candump can0,00200200:0,255:0

但这给出了所有帧,并且每个帧显示两次。即输出:

cansend can0 256#112233

会是这样的:

can0      256  [3] 11 22 33
can0 256 [3] 11 22 33

除了过滤器的行为不像我预期的那样并通过 0x256,它出现两次的事实表明这个帧实际上与两个过滤器匹配,这对我来说更没有意义。任何人都可以解释为什么会发生这种情况,并告诉我正确的方法吗?

最佳答案

来自 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:~$

关于linux - 被 candump (SocketCAN) ID 过滤功能严重混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com