我正在尝试在Ubuntu 13.04(竞赛环尾)下使用pyvisa控制Agilent 33120A任意波形发生器。我已经使用我们的实验室NI GPIB-USB-B适配器安装并设置了与仪器通讯所需的一切。适配器固件已加载,linux-gpib的内核模块也已加载。

我可以成功进行一些试运行,例如通过运行# ibtest(命令行工具),我可以将*IDN?写入设备,并且收到设备ID:'HEWLETT-PACKARD,33120A,0,8.0-5.0-1.0'。我还成功测试了其他命令,例如设置电压和频率,等等。有用。

问题是,pyvisa总是抛出VisaIOError ...我不知道如何使其工作。我以root用户身份运行python-2.7,因此(暂时)我不必处理任何访问权限。这是代码和输出:

import visa
>>> visa.vpp43.visa_library.load_library("/usr/lib/x86_64-linux-gnu/libvisa.so.0")
>>> visa.get_instruments_list()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/pyvisa/visa.py", line 254, in get_instruments_list
    vpp43.find_resources(resource_manager.session, "?*::INSTR")
  File "/usr/lib/python2.7/dist-packages/pyvisa/vpp43.py", line 583, in find_resources
instrument_description)
  File "/usr/lib/python2.7/dist-packages/pyvisa/vpp43.py", line 398, in check_status
raise visa_exceptions.VisaIOError, status
pyvisa.visa_exceptions.VisaIOError: VI_ERROR_RSRC_NFOUND: Insufficient location information or the requested device or resource is not present in the system.

库正确加载。甚至没有必要,但是为了安全起见,我明确加载了该库。显然,pyvisa找不到任何工具。我还尝试使用以下两个命令之一显式打开我的乐器board=0, pad=10, sad=0:
visa.instrument("GPIB::10")
visa.instrument("GPIB0::10")
visa.instrument("GPIB::10::0")
visa.instrument("GPIB0::10::0")

但是引发了与上述相同的异常。

基本上,一切都设置正确,但是pyvisa看不到任何东西。

使用的版本:
  • pyvisa-1.4
  • python-2.7
  • linux-gpib-3.2.20
  • libvisa-0.0.20130812-1(https://launchpad.net/ubuntu/trusty/amd64/libvisa0/)的最新版本Ubuntu 14.04(Trusty Tahr),因为该库不在Ubuntu 13.04的存储库中)

  • 我希望有一些建议。

    最佳答案

    pyvisa是NI-VISA的Python包装器。据我所知,不可能将pyvisalinux-gpib一起使用。但是linux-gpib带有自己的Python包装器。只需输入import Gpib,您就可以开始使用了,

    >>>import Gpib
    >>>device = Gpib.Gpib(pad=10)
    >>>device.write('*IDN?')
    >>>device.read()
    'HEWLETT-PACKARD,33120A,0,8.0-5.0-1.0'
    

    我想您正在编写某种测量脚本。看看slave可能对您有用(免责声明:我是slave的作者)。它试图简化设备通信。它还带有自己的linux-gpib包装器。

    09-06 05:16