0

我正在尝试对我的 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
4

0 回答 0