我有一个 USB/CAN 适配器,来自lsusb
:
OpenMoko, Inc. Geschwister 施耐德 CAN 适配器
它提供了一个套接字接口,来自ip addr
:
5: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP group default qlen 10 link/can
总线上还有其他设备不断发送数据。如果我重新启动电脑,我将无法再发送/接收数据,因为出现以下错误:
没有可用的缓冲空间
我猜想,当设备与 PC“断开连接”时(因为它正在重新启动,但仍然通电),内部缓冲区已满。
我可以发出命令来清除缓冲区吗?
答案1
我相信 python-can 库提供了一个解决方案
https://buildmedia.readthedocs.org/media/pdf/python-can/develop/python-can.pdf
python-can 库为 Python 提供控制器局域网支持,为不同的硬件设备提供通用抽象,以及一套用于在 CAN 总线上发送和接收消息的实用程序。
那里提供的功能之一是flush_tx_buffer()
刷新_tx_缓冲区()
丢弃可能在输出缓冲区中排队的每条消息。
该库可以从各个位置下载,包括从 github 存储库下载https://github.com/hardbyte/python-can