我正在尝试对我的 ECU 进行一些诊断,为此,我需要每 50 毫秒发送一次特定消息。我正在使用 MCP2515 CAN BUS 模块和树莓派进行通信。问题是,当程序初始化时它工作正常。但片刻之后,它给出了错误"Transmit Buffer Full"。我试图通过将其txqueuelen
增加到 20000 来修复它,但我仍然得到相同的响应。我什至尝试了bus.flush_tx_buffer
我在网站上找到的命令,但它似乎不起作用。在过去的两周里,我一直在努力解决这个问题,并在互联网上到处搜索,找不到合适的解决方案。请帮我解决这个问题。我正在为这个项目使用 python-can 3.3.4 库。
这是我的代码:
bus = can.interface.Bus(channel = channel, bustype = bustype, bitrate = 500000)
s_msg = can.Message(arbitration_id=0x1860, data = [0x15, 0x40, 0x26, 0x90, 0x46, 0x78, 0x53, 0x79], is_extended_id=False)
i=0
while i > 0:
bus.send(s_msg)
print(s_msg)
r_msg = bus.recv()
print(r_msg)
print(i)
time.sleep(0.05)
bus.flush_tx_buffer()
这是我跑步时的反应ip -details -statistics link show can0
can0: flags=193<UP,RUNNING,NOARP> mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 20000 (UNSPEC)
RX packets 2266 bytes 18128 (17.7 KiB)
RX errors 0 dropped 2266 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0