在此处使用python-can库。这是打印罐头消息的简单代码:
from can.interface import Bus
bus = Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000)
for msg in bus:
print(msg)
它运行得很好,直到我停止程序(在Pycharm IDE中运行该程序)并尝试再次运行它为止。它将显示此错误:
can.interfaces.pcan.pcan.PcanError: A PCAN Channel has not been initialized yet or the initialization process has failed
我不知道为什么。可通过重新插入CAN加密狗或重新启动Pycharm来“重新启动”程序来解决此问题。是因为先前的实例被缓存在某个地方吗?希望能对此提出建议。
答案 0 :(得分:0)
当您的应用程序无法使用CAN_UnInitialize()关闭通道,或者使用调试器中断应用程序时,就会发生这种情况。因此,请在关闭应用程序之前取消初始化通道,或重新启动系统一次。
答案 1 :(得分:0)
如果我没记错的话,请不要关闭总线的第一个实例。您必须在脚本结尾处调用bus.shutdown()
。如果您在再次运行之前未调用bus.shutdown()
,则尝试实例化并已经存在的总线实例。