python-3.x - 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 - VSCode 我无法“开始调试”和“在没有调试的情况下运行”
- qt - Qt With Raspi:错误编译器为不同的 ABI 生成代码
- java - 将组件对齐到父组件的右侧
- mongodb - 我正在尝试使用 rs.initiate 方法将两个配置服务器部署为副本集,但是在部署时我的第二个配置服务器出现此错误
- python - cuda-cross-aarch64 是通过 conda、conda-forge 通道安装的 cudatoolkit 的一部分吗?
- node.js - 是否可以通过 Windows 服务器上的 Puppeteer 连接到 NordVPN?
- html - 使用网格模板区域的项目布局
- javascript - client.on() 不触发
- swift - Swift 中泛型声明中的数组
- excel - INDIRECT excel函数的使用