【问题标题】:Why can I only initialize specific PCAN Channel once?为什么我只能初始化特定的 PCAN 通道一次?
【发布时间】:2019-03-04 23:44:08
【问题描述】:

在这里使用 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。是因为前一个实例被缓存在某个地方吗?不胜感激这方面的建议。

【问题讨论】:

    标签: python can-bus python-can


    【解决方案1】:

    如果我没记错的话,您永远不会关闭总线的第一个实例。您必须在脚本末尾调用bus.shutdown()。如果您在再次运行之前没有调用bus.shutdown(),那么您正在尝试实例化并且已经存在的总线实例。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 无需重启系统。在 Windows 10 上,重新启动 python 解释器就足够了。
      猜你喜欢
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2012-01-07
      相关资源
      最近更新 更多