Почему я могу инициализировать определенный канал 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(), или когда вы сломаете приложение с помощью отладчика. Поэтому, пожалуйста, неинициализируйте канал перед закрытием приложения или перезагрузите систему один раз.