Как исправить ошибку usb.core.USBE термопринтера, подключенного к raspberry pi через USB-порт - PullRequest
0 голосов
/ 23 декабря 2019

У меня проблема с моим термопринтером, я не могу печатать, но он работает. Я использую модуль python esc-pos https://pythonhosted.org/python-printer-escpos/modules/escpos.html

это мой код

from escpos.connections import getUSBPrinter
printer = getUSBPrinter()(idVendor=0x0fe6, idProduct=0x811e, interface=98)
printer.text("Hello World")
printer.lf()

вот ошибка, с которой я столкнулся.

Traceback(последний вызов был последним): файл "/ home / pi / try thermal.py", строка 4, в printer = getUSBPrinter () (idVendor = 0x0fe6, idProduct = 0x811e, interface = 98) Файл "/ usr / local / lib/python3.7/dist-packages/escpos/connections.py ", строка 87, в init self. open () Файл" /usr/local/lib/python3.7/dist-packages / escpos / connections.py ", строка 106, в __open if self._device.is_kernel_driver_active (0): Файл" /usr/local/lib/python3.7/dist-packages/usb/core.py ", строка 1061, в is_kernel_driver_active self._ctx.managed_open () Файл "/usr/local/lib/python3.7/dist-packages/usb/core.py", строка 102, в оболочке возвращает f (self, * args, ** kwargs)) Файл "/usr/local/lib/python3.7/dist-packages/usb/core.py", строка 120, в файле managed_open self.handle = self.backend.open_device (self.dev) "/ usr / local/lib/python3.7/dist-packages/usb/backend/libusb1.py ", строка 786, в действииen_device return _DeviceHandle (dev) File "/usr/local/lib/python3.7/dist-packages/usb/backend/libusb1.py", строка 643, в __init _check (_lib.libusb_open (self.devid,byref (self.handle))) Файл "/usr/local/lib/python3.7/dist-packages/usb/backend/libusb1.py", строка 595, в _check повысить USBError (_strerror (ret), ret, _libusb_errno[ret]) usb.core.USBError: [Errno 13] Доступ запрещен (недостаточно прав)

Используемый термопринтер: https://www.dfrobot.com/product-1799.html https://www.adafruit.com/product/2751

Надеюсь, вы, ребята, можете мне помочь, мне очень нужно это на тезисе, и я только новичок в raspberry-pi.

1 Ответ

0 голосов
/ 23 декабря 2019

Ваш пользователь Linux не имеет доступа к USB-устройству, поэтому вам нужно создать правило udev для предоставления доступа.

Создать файл printer.rules со следующим содержимым:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fe6", ATTRS{idProduct}=="811e", MODE="0666"

И скопируйте его в каталог правил через sudo:

sudo cp printer.rules /etc/udev/rules.d

Затем перезагрузите правила udev:

udevadm control --reload-rules && udevadm trigger

Теперь каждый пользователь должен иметь доступ к принтеру. .

...