我正在尝试使用 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
如果有人能建议我如何进一步调查此问题并可能解决它,我将不胜感激。谢谢!