Python pyVISA GPIB连接问题

时间:2015-02-22 21:12:10

标签: python pythonxy gpib

我尝试使用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仪器并可以与它们通信。我也可以毫无问题地与乐器进行交流。

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

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

我非常感谢任何指导。

由于

7 个答案:

答案 0 :(得分:0)

您可能需要使用以下命令启动资源管理器:

rm = ResourceManager('Path to library')

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

还可以尝试:

python -m visa info

确保安装的文件长度与正在运行的python版本相同。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我有完全相同的问题 - 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安装进行任何自定义以使其正常工作。哪个好。

希望这有帮助!

答案 3 :(得分:0)

我有同样的问题(在64位win7上运行32位python 2.7),我使用

修复了它

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

这是"关于Agilent IO Control"中给出的32位VISA路径。信息。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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

通过更新C:\Program Files\National Instruments\NI-488.2(或安装了驱动程序的驱动程序)的驱动程序(设备管理器 - >属性)解决了这个问题。

现在GPIB也可以从python中运行。

答案 6 :(得分:-1)

我在Keysight签证库的PC上运行时发现了相同的错误报告。用National Instruments取代签证dll解决了这个问题。