连接 USB 时出现“[Errno 13] 访问被拒绝”

问题描述 投票:0回答:2

所以我一直在关注这些文档,以便我可以通过python在热敏打印机上打印。

我正在运行 Ubuntu 并安装了 pyusb 模块。 打印机是容大RP58,通过lsusb命令找到它的idVendor和idProduct(0fe6:811e)。

就像在说明中一样,我输入:

from escpos.printer import Usb
p = Usb(0x0fe6, 0x811e)

但是出现错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/testerdell/.local/lib/python2.7/site-packages/escpos/printer.py", line 51, in __init__
    self.open()
  File "/home/testerdell/.local/lib/python2.7/site-packages/escpos/printer.py", line 62, in open
    check_driver = self.device.is_kernel_driver_active(0)
  File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 1061, in is_kernel_driver_active
    self._ctx.managed_open()
  File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/home/testerdell/.local/lib/python2.7/site-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/home/testerdell/.local/lib/python2.7/site-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

文档中,它建议创建一个授予访问权限的规则,但它对我不起作用。

sudo nano /etc/udev/rules.d/99-escpos.rules

是我用来编辑文件的命令,这就是里面的内容

SUBSYSTEM=="usb", ATTRS{idVendor}=="0fe6", ATTRS{idProduct}=="811e", MODE="0664", GROUP="dialout"

更改该文件中的任何内容后,我运行以下代码:

sudo service udev restart

我不知道还能如何通过 USB 访问 python。 使用直接 root 访问时

sudo su root

系统显示“ImportError:没有名为 escpos.printer 的模块”。我不想每次都输入 root 访问密码。

我的udev规则、组、模式、用户权限有问题吗?

非常感谢任何帮助!预先感谢:)

python linux permissions thermal-printer escpos
2个回答
2
投票

在 udev 规则中将模式从 664 更改为 666,它将起作用。


0
投票

这仅限于Linux吗?有没有基于 Windows 的解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.