无法获得包含序列号的完整 VISA 地址
Unable to get full VISA address that includes the serial number
我以前没有任何 Python 方面的经验,我想看看我是否可以从具有 USB VISA 地址的设备查询信息。我是 运行 Raspbian GNU/Linux 9(拉伸)和 Python 3.5.3 Shell。 python 的 VISA 包是使用 pip3:
安装的
$ sudo pip3 install pyvisa-py
因为我用 USB 接口连接设备,所以我也安装了 python USB 包。
$ sudo pip3 install pyusb
当我按照 PyVISA website 使用通用命令时,我能够读取不带序列号的部分 VISA 地址,如下所示:
>>> import visa
>>> rm = visa.ResourceManager()
>>> print(rm.list_resources())
Found a device whose serial number cannot be read. The partial VISA resource name is: USB0::2391::11032::???::0::INSTR
('ASRL/dev/ttyAMA0::INSTR',)
这是 python 签证信息:
$ python3 -m visa info
Machine Details:
Platform ID: Linux-4.14.62-v7+-armv7l-with-debian-9.4
Processor:
Python:
Implementation: CPython
Executable: /usr/bin/python3
Version: 3.5.3
Compiler: GCC 6.3.0 20170124
Bits: 32bit
Build: Jan 19 2017 14:11:04 (#default)
Unicode: UCS4
PyVISA Version: 1.9.1
Backends:
ni:
Version: 1.9.1 (bundled with PyVISA)
Binary library: Not found
py:
Version: 0.3.0
TCPIP SOCKET: Available
GPIB INSTR:
Please install linux-gpib to use this resource type.
No module named 'gpib'
USB INSTR: Available via PyUSB (1.0.2). Backend: libusb1
ASRL INSTR: Available via PySerial (3.2.1)
USB RAW: Available via PyUSB (1.0.2). Backend: libusb1
TCPIP INSTR: Available
不确定我做错了什么。如何阅读完整的 VISA 资源名称?如果没有它,即使我试图用完整的 VISA 地址强制打开设备,它也会引发另一个错误。
参考NI-VISA 17.0自述文件后,我找到了问题的答案。由于只读访问,USB 设备无法被 VISA 访问。从 LinuxQuestions.org and GitHub 中找到了有关如何编辑和编辑哪个文件的解决方案。我采取的步骤如下:
要在 Linux 系统上成为 root,请在终端中发出命令
sudo -i
并在询问时提供您的登录密码。然后给出上面的命令。请在按
之前仔细检查您的拼写/复制
而在这里,要编辑 USB 权限文件,您需要在终端中输入以下命令:
成为根(如上所述)。请注意您的终端提示发生了怎样的变化。
备份原文件:
cp /etc/udev/rules.d/99-com.rules /etc/udev/rules.d/99-com.rules.BAK
使用 nano 编辑器打开文件:
nano /etc/udev/rules.d/99-com.rules
通过添加以下内容编辑文件:
SUBSYSTEM=="usb", MODE="0666", GROUP="usbusers"
用 "WriteOut" 保存更改,即 ,按 Enter 确认文件名和位置。然后 "Exit" 这是
您需要重新启动 udev 以便注意到更改:
/etc/init.d/udev restart
关闭终端。
@Arun Kumar 为我工作(Linux-4.15.0-34-generic-x86_64-with-Ubuntu-18.04-bionic)。
我只是想添加到答案中,为了使其工作,我必须创建 "usbusers" 组:
sudo groupadd usbusers
并将我自己加入群组:
sudo usermod -a -G usbusers USERNAME
终于重启了...
我以前没有任何 Python 方面的经验,我想看看我是否可以从具有 USB VISA 地址的设备查询信息。我是 运行 Raspbian GNU/Linux 9(拉伸)和 Python 3.5.3 Shell。 python 的 VISA 包是使用 pip3:
安装的$ sudo pip3 install pyvisa-py
因为我用 USB 接口连接设备,所以我也安装了 python USB 包。
$ sudo pip3 install pyusb
当我按照 PyVISA website 使用通用命令时,我能够读取不带序列号的部分 VISA 地址,如下所示:
>>> import visa
>>> rm = visa.ResourceManager()
>>> print(rm.list_resources())
Found a device whose serial number cannot be read. The partial VISA resource name is: USB0::2391::11032::???::0::INSTR
('ASRL/dev/ttyAMA0::INSTR',)
这是 python 签证信息:
$ python3 -m visa info
Machine Details:
Platform ID: Linux-4.14.62-v7+-armv7l-with-debian-9.4
Processor:
Python:
Implementation: CPython
Executable: /usr/bin/python3
Version: 3.5.3
Compiler: GCC 6.3.0 20170124
Bits: 32bit
Build: Jan 19 2017 14:11:04 (#default)
Unicode: UCS4
PyVISA Version: 1.9.1
Backends:
ni:
Version: 1.9.1 (bundled with PyVISA)
Binary library: Not found
py:
Version: 0.3.0
TCPIP SOCKET: Available
GPIB INSTR:
Please install linux-gpib to use this resource type.
No module named 'gpib'
USB INSTR: Available via PyUSB (1.0.2). Backend: libusb1
ASRL INSTR: Available via PySerial (3.2.1)
USB RAW: Available via PyUSB (1.0.2). Backend: libusb1
TCPIP INSTR: Available
不确定我做错了什么。如何阅读完整的 VISA 资源名称?如果没有它,即使我试图用完整的 VISA 地址强制打开设备,它也会引发另一个错误。
参考NI-VISA 17.0自述文件后,我找到了问题的答案。由于只读访问,USB 设备无法被 VISA 访问。从 LinuxQuestions.org and GitHub 中找到了有关如何编辑和编辑哪个文件的解决方案。我采取的步骤如下:
要在 Linux 系统上成为 root,请在终端中发出命令
sudo -i
并在询问时提供您的登录密码。然后给出上面的命令。请在按
之前仔细检查您的拼写/复制而在这里,要编辑 USB 权限文件,您需要在终端中输入以下命令: 成为根(如上所述)。请注意您的终端提示发生了怎样的变化。 备份原文件:
cp /etc/udev/rules.d/99-com.rules /etc/udev/rules.d/99-com.rules.BAK
使用 nano 编辑器打开文件:
nano /etc/udev/rules.d/99-com.rules
通过添加以下内容编辑文件:
SUBSYSTEM=="usb", MODE="0666", GROUP="usbusers"
用 "WriteOut" 保存更改,即 ,按 Enter 确认文件名和位置。然后 "Exit" 这是 您需要重新启动 udev 以便注意到更改:
/etc/init.d/udev restart
关闭终端。
@Arun Kumar 为我工作(Linux-4.15.0-34-generic-x86_64-with-Ubuntu-18.04-bionic)。 我只是想添加到答案中,为了使其工作,我必须创建 "usbusers" 组:
sudo groupadd usbusers
并将我自己加入群组:
sudo usermod -a -G usbusers USERNAME
终于重启了...