python-can icon indicating copy to clipboard operation
python-can copied to clipboard

The method set_filters doesn’t work sometimes

Open Cecilia979 opened this issue 2 years ago • 4 comments

Describe the bug

I used the method set_filters to receive the messages of my specified ID,but the first few messages were not what I expected.

To Reproduce

with can.interface.Bus(bustype='vector', channel=2, bitrate=500000,data_bitrate=2000000,app_name="CANoe",fd=True,) as bus:
    bus.set_filters([{"can_id": 0x1b1, "can_mask": 0x7FF, "extended": False}])
    while True:
        msg = bus.recv()
        print("recv",msg)

0x1b1 was the only ID that I expect,but I got others such as 0x3ea,0x335 at the beginning.

Expected behavior

I expect to receive the specified messages

Additional context

OS and version: Win10 Python version: 3.8 python-can version:4.3.1 python-can interface/s (if applicable): image Vector / canoe

Cecilia979 avatar Dec 22 '23 07:12 Cecilia979

Does it generally look like that the interface is enabled BEFORE the filters are applied?

hartkopp avatar Dec 22 '23 11:12 hartkopp

Could it be related to #1413 and a general problem of receive buffers not necessarily being flushed when a filter is applied?

grant-allan-ctct avatar Dec 22 '23 16:12 grant-allan-ctct

Does it generally look like that the interface is enabled BEFORE the filters are applied?

It seems to be the problem! Because generally speaking, only the first few messages will not be what I expected, while the rest are expected

Cecilia979 avatar Dec 26 '23 06:12 Cecilia979

Could it be related to #1413 and a general problem of receive buffers not necessarily being flushed when a filter is applied?

I have read this 1413 issue, and it is indeed similar. But in this issue the device is kvaser, while I am using vector(appname canoe). And I didn't find the flush_rx_buffer function in the source code. There is only flush_tx_buffer. So in fact, I still don't quite understand how to solve this problem.

Cecilia979 avatar Dec 26 '23 06:12 Cecilia979