如何修复通过USB端口连接到树莓派的热敏打印机的usb.core.USBError

时间:2019-12-23 04:53:55

标签: python printing raspberry-pi usb raspbian

我的热敏打印机有问题,我无法打印,但是可以正常工作。 我正在使用esc-pos python模块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()

这是我遇到的错误。

  

回溯(最近一次通话):文件“ /home/pi/trythermal.py”,   第4行       打印机= 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中       如果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,在open_device中       返回_DeviceHandle(dev)文件“ /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 :(得分:0)

您的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

现在,每个用户都应该有权使用打印机。