python-usbtmc 权限不足。Raspberry Pi 4,Python3

python-usbtmc 权限不足。Raspberry Pi 4,Python3

我正在尝试使用 python-usbtmc 连接到我的 Agilent 示波器。我设法使用 github 上的 readme 来使其工作,但自从重新启动 Pi 后就遇到了错误。

lsusb 的输出:

pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 04d9:0007 Holtek Semiconductor, Inc. 
Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 023: ID 0957:0588 Agilent Technologies, Inc. 
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

我正在查看的设备是 0959:0588。

我的 udev 规则文件:

# USBTMC instruments

# Agilent DSO1052B
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0x0957", ATTR{idProduct}=="0x0588", GROUP="usbtmc", MODE="0666"

注意:我也尝试过 ATTRS。

我的Python3代码:

>>> import usbtmc
>>> inst = usbtmc.Instrument(0x0957, 0x0588)
>>> print(inst.ask("*IDN") 

返回:

usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

插入电源并打开电源后,范围将添加到 /dev/usbtmc0。使用 ls -all,我得到:

pi@raspberrypi:/dev $ ls -all | grep usbtmc*
crw-rw-rw-   1 root usbtmc    180, 176 Jun 11 14:13 usbtmc0

在我看来,根据 udev 文件,这些权限看起来是错误的……但我肯定在这方面缺乏经验。当我以 sudo 身份运行 python 时,它会按预期工作(尽管此外,设备在 list_resources() 中的列出方式不同:

>>> import usbtmc
>>> usbtmc.list_resources()
['USB::2391::1416::CN56489391\x00\x00\x00\x00\x00::INSTR']
>>> inst = usbtmc.Instrument(2391, 1416)
>>> print(inst.ask("*IDN?"))
AGILENT TECHNOLOGIES,DSO1052B,CN56489391,01.20.00 SP4

如果有人能建议我如何进一步调查此问题并可能解决它,我将不胜感激。谢谢!

相关内容