【问题标题】:Python pyVISA GPIB connection issuePython pyVISA GPIB 连接问题
【发布时间】:2015-02-22 21:12:10
【问题描述】:

我正在尝试使用 pyVISA 连接到 GPIB 仪器,但出现错误。我正在关注 pyVISA 网站上的简单示例:http://pyvisa.readthedocs.org/en/master/

我在 IPython 控制台中输入以下代码:

import visa
rm = visa.ResourceManager()
rm.list_resources()

Out[4]:
(u'USB0::0x0957::0x0D0B::MY49431510::INSTR',
 u'USB0::0x0957::0x17BC::MY52400338::INSTR',
 u'ASRL1::INSTR',
 u'ASRL2::INSTR',
 u'ASRL5::INSTR',
 u'ASRL6::INSTR',
 u'ASRL7::INSTR',
 u'ASRL8::INSTR',
 u'ASRL9::INSTR',
 u'ASRL10::INSTR')

但是,我的 GPIB 仪器没有显示,只有串行端口和我的 USB 仪器。当我启动 Agilent Connection Expert(或 NI MAX)时,我可以看到我所有的 GPIB 仪器并可以与它们通信。我还能够与 Matlab 毫无问题地与仪器通信。

所以当我尝试用线路连接仪器时:

inst = rm.open_resource('GPIB0::19::INSTR')

它抛出一个错误: VisaIOError: VI_ERROR_INTF_NUM_NCONFIG (-1073807195): The interface type is valid but the specified interface number is not configured.

我还尝试连接列出资源时显示的 USB 仪器,但它们不会引发此错误。但是,当我尝试做一个简单的查询时:

inst = rm.open_resource('USB0::0x0957::0x0D0B::MY49431510::INSTR')
inst.query("*IDN?")

什么都不会返回,也不会抛出任何错误。

我正在使用 Python(X,Y) 2.7.9.0 和 Python 版本 2.7.9 32 位

pyVISA 版本为 1.6.3 NI位数为32

感谢任何指导,因为我是 Python 新手。

谢谢

【问题讨论】:

    标签: python pythonxy gpib


    【解决方案1】:

    您可能需要启动资源管理器:

    rm = ResourceManager('Path to library')
    

    其中 Path to library 是 NI Vista Library 的位置。

    也试试:

    python -m visa info
    

    以确保您安装它的字长与您正在运行的 python 版本相同。

    【讨论】:

    • 感谢史蒂夫的建议!我根据 pyVISA FAQ 发布了python -m visa info,并且字长匹配。当我发出rm = ResourceManager('C:\WINDOWS\system32\visa32.dll') 时,它会返回以下回溯错误。 AttributeError: 'NIVisaLibrary' object has no attribute 'viOpenDefaultRM'
    【解决方案2】:

    我遇到了同样的问题,并通过将路径地址设置为“C:/Program Files/IVI Foundation/VISA/WinNT/agvisa/agbin/visa32.dll”来解决它。如果您还没有找到解决方案,我希望它也适用于您。

    【讨论】:

      【解决方案3】:

      我遇到了完全相同的问题 - USB 资源出现了,GPIB 资源没有出现。我尝试完全按照您的方式打开资源inst = rm.open_resource('GPIB0::22::INSTR')(GPIB 地址更改为我的仪器之一),结果完全相同。一些启发性的随机猜测让我想到了

      inst = rm.open_resource('GPIB1::22::INSTR')
      

      效果很好!一旦仪器打开,它就会按预期显示在资源列表中。我不知道为什么接口被视为 GPIB1。

      我使用 Keysight/Agilent/HP IO 库套件作为我的 VISA 库(未安装 NI 库)和 Agilent 82357B USB 到 GPIB 接口。我不必对我的 pyVisa 安装进行任何自定义即可使其正常工作。哪个不错。

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题(在 64 位 win7 上运行 32 位 python 2.7),我使用它修复了它

        rm = ResourceManager('C:/Program Files (x86)/IVI Foundation/VISA/WinNT/agvisa/agbin/visa32.dll')

        这是“关于安捷伦 IO 控制”信息中给出的 32 位 VISA 路径。

        【讨论】:

          【解决方案5】:

          我的计算机上安装了 ni-visa 和 Agilent visa。但是,pyvisa 由于指向错误的库,无法访问 Agilent 82357B 设备。

          我使用这个命令来指定正确的库,它对我有用。几个笔记:

          • 根据每个visa包,在不同的安装目录中找到适合设备的visa32.dll库。
          • 即使在 Windows 上,也可以使用正斜杠来分隔字符。
          • 在命令中指定签证包:rm = visa.ResourceManager('c:/....')

          【讨论】:

            【解决方案6】:

            我有同样的问题。问题是自动安装的 Windows 驱动程序错误,我的设备在 NI MAX 中显示为USB0::0x3923::0x702A::010A65AB::RAW

            已通过从C:\Program Files\National Instruments\NI-488.2(或您的驱动程序安装位置)更新驱动程序(设备管理器-> 属性)来解决。

            现在 GPIB 也适用于 python。

            【讨论】:

              【解决方案7】:

              在带有 Keysight 签证库的 PC 上运行时,我观察到了相同的错误报告。用 National Instruments 的 visa dll 替换解决了这个问题。

              【讨论】:

                猜你喜欢
                • 2018-12-26
                • 1970-01-01
                • 1970-01-01
                • 2021-03-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多