为什么我只能初始化一次特定的PCAN通道一次?

时间:2019-03-04 23:44:08

标签: python can-bus python-can

在此处使用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来“重新启动”程序来解决此问题。是因为先前的实例被缓存在某个地方吗?希望能对此提出建议。

2 个答案:

答案 0 :(得分:0)

当您的应用程序无法使用CAN_UnInitialize()关闭通道,或者使用调试器中断应用程序时,就会发生这种情况。因此,请在关闭应用程序之前取消初始化通道,或重新启动系统一次。

答案 1 :(得分:0)

如果我没记错的话,请不要关闭总线的第一个实例。您必须在脚本结尾处调用bus.shutdown()。如果您在再次运行之前未调用bus.shutdown(),则尝试实例化并已经存在的总线实例。