我的一台 GPIB 仪器有问题。这是一个相当古老的,它被称为IEEE-488-1978。我一直在尝试获取该版本的IEEE-488的参考手册,但没有成功。
问题在于,为了读取仪器的状态寄存器,它需要一个串行轮询功能(如其参考手册所述)。我不知道如何使用PyVISA在Python中做到这一点。
例如,我用来从设备读取的是_instrument.ask("RV")_
,其中_RV_
表示_Read Version_
。另外,对于编写温度等参数,我确实_instrument.write("ST20.00")_
,其中_ST20.00_
表示_Set Temperature to 20.00 Celcius_
。
我一直在尝试找到一个 ASCII 命令,使用 _ask_
Python/VISA 命令发送到仪器并返回_Status Register Byte_
,但似乎没有什么可行的。
如果有人有关于如何使用Python/VISA传递串行轮询函数的建议,那可以解决我的问题。
1975年,IEEE创建了IEEE-488-1975标准,描述了数字通信总线,有时被称为GPIB。它于1978年进行了修订。它描述了硬件接口,但没有描述命令和数据的格式。1987年,他们推出了IEEE-488.2-1987标准,描述了标准代码,格式,协议和通用命令。
现在回到你的问题。
pyvisas visa.GpibInstrument
类具有一个名为 stb
的属性,您可以使用该属性访问状态字节。从源头:
@property
def stb(self):
"""Service request status register."""
return vpp43.read_stb(self.vi)
所以你可以简单地做
instrument = visa.instrument('GPIB::01') # Assuming a GPIB device on channel 1
print instrument.stb # Print status register
如果您的设备符合 IEEE-488.2,您还有一个选择。您可以发送通用命令*STB?
instrument = visa.instrument('GPIB::01') # Assuming a GPIB device on channel 1
print instrument.ask('*STB?') # Print status register