无法获得包含序列号的完整VISA地址

时间:2018-09-10 10:45:59

标签: python raspbian pyusb pyvisa

我以前没有使用Python的经验,正在尝试查看是否可以从具有USB VISA地址的设备查询信息。我正在使用Python 3.5.3 Shell运行Raspbian GNU / Linux 9(拉伸)。 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 VISA信息:

$ 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地址打开设备,也会引发另一个错误。

2 个答案:

答案 0 :(得分:2)

在参考NI-VISA 17.0 read me文件后,我找到了问题的答案。由于只读访问,VISA无法访问USB设备。在Python multiprocessing, passing an object reference containig a semaphoreLinuxQuestions.org中找到了有关如何编辑和编辑哪个文件的解决方案。我采取的步骤如下:

要成为Linux系统的root用户,请在终端中发出命令

sudo -i

,并在询问时提供您的登录密码。然后按照上面的命令。按下

之前,请仔细检查拼写/复制

在这里,要编辑USB权限文件,您需要在终端中输入以下命令: 成为root(如上所述)。请注意您的终端提示如何更改。 备份原始文件:

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”保存更改,即按,以确认文件名和位置。然后是“退出” 您需要重新启动udev,以便注意更改:

/etc/init.d/udev  restart

关闭终端。

答案 1 :(得分:1)

@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

最后重新启动...