我正在用PyVISA控制GPIB上的仪器(非常老的霍尔测量设备)。我知道它适用于labview,在那里我找到了地址做什么,和一些基本的命令用一个追踪器,但没有joy。我被要求在python 3中编写DAQ和分析代码。
到目前为止,我已经确定了地址:
import visa
rm = visa.ResourceManager()
print(rm.list_resources())
>>>('ASRL1::INSTR', 'GPIB0::3::0::INSTR', 'GPIB0::3::1::INSTR', 'GPIB0::3::3::INSTR', 'GPIB0::3::4::INSTR', 'GPIB0::3::5::INSTR', 'GPIB0::3::6::INSTR', 'GPIB0::3::7::INSTR', 'GPIB0::3::8::INSTR', 'GPIB0::3::9::INSTR', 'GPIB0::3::10::INSTR')但是,当我试图查询任何"wave“或确实是测量命令字符串(发现跟踪labview I/O)时,总是会遇到超时错误。
instr3_8 = rm.open_resource('GPIB0::3::8::INSTR')
instr3_8.query("*IDN?")
>>>VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.这是我试着从仪器上读到的所有东西的结果。
(PyVISA和GPIB使用Keithley源表IDN查询,因此我知道后端正在工作。这款仪器是一款bio 5200,很可能对任何人都有用,我没有找到任何手册,也几乎没有在线参考。)
这是读取磁铁位置的labview框图图像。从那以后,我就可以用pyvisa来改变这个位置了,但是阅读仍然会导致超时,github上类似的问题让我相信终止字符是错误的,但我还没有修复。
发布于 2017-11-22 15:51:37
这个问题归结为PyVISA和NI MAX在从仪器读取时没有识别终止字符。在用.read_termination尝试了所有可能的终止字符之后,我找到了一个能工作的字符,它终于可以从我的霍尔探针中读取。
发布于 2017-12-02 23:56:02
非常老的GPIB仪器通常有不完整或非标准的GPIB实现.例如,它们可能不支持*IDN?,或者只有一个硬编码命令终止字符。
有些旧仪器也使用地址+1作为“打印机”地址。因此,仪器保留它设置的地址,但也保留下一个地址。如果同一网络上有更多的(旧的)仪器,这可能是造成重大混乱的原因之一,所以最好不要使用后续地址,而是使用1、3、5、7。
而且,即使只是频繁地轮询状态字节也会使真正老旧的设备的处理能力过载,更不用说读取应答缓冲区了。
https://stackoverflow.com/questions/47354065
复制相似问题