Почему я могу инициализировать определенный канал PCAN только один раз?

Используя библиотеку 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

Я не могу понять, почему это так. Это исправлено путем "перезапуска" программы, либо путем повторной установки ключа Dongle CAN, либо путем перезапуска Pycharm. Это потому, что предыдущий экземпляр был где-то кэширован? Был бы признателен за совет по этому вопросу.

1 ответ

Если я не ошибаюсь, вы никогда не выключаете первый экземпляр автобуса. Вы должны позвонитьbus.shutdown()в конце вашего скрипта. Если ты не позвонишьbus.shutdown() перед повторным запуском вы пытаетесь создать уже существующий экземпляр шины.

Это произойдет, когда ваше приложение не закроет канал с помощью CAN_UnInitialize(), или когда вы сломаете приложение с помощью отладчика. Поэтому, пожалуйста, неинициализируйте канал перед закрытием приложения или перезагрузите систему один раз.

Другие вопросы по тегам