#python-3.x #raspberry-pi4 #pyvisa
Вопрос:
Я пытаюсь использовать python-usbtmc для подключения к моему осциллографу Agilent. Мне удалось использовать readme на 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… но, конечно, я немного неопытен в этой области. Когда я запускаю python от имени sudo, он работает так, как ожидалось (хотя, кроме того, устройство указано по-другому в list_resources():
>>> import usbtmc
>>> usbtmc.list_resources()
['USB::2391::1416::CN56489391x00x00x00x00x00::INSTR']
>>> inst = usbtmc.Instrument(2391, 1416)
>>> print(inst.ask("*IDN?"))
AGILENT TECHNOLOGIES,DSO1052B,CN56489391,01.20.00 SP4
Я был бы признателен, если бы кто-нибудь мог подсказать, что я могу предпринять для дальнейшего изучения этой проблемы и, возможно, ее решения. Спасибо!