首页 > 解决方案 > python-usbtmc 权限不足。树莓派 4、Python3

问题描述

我正在尝试使用 python-usbtmc 连接到我的安捷伦示波器。我设法使用 github 上的自述文件让它工作,但在重新启动我的 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", ATTRS{idVendor}=="0x0957", ATTRS{idProduct}=="0x0588", GROUP="usbtmc", MODE="0660"

我的 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-------   1 root root    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

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

标签: python-3.xraspberry-pi4pyvisa

解决方案


推荐阅读