我的 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_
。
我一直在尝试使用_ask_
Python / VISA命令找到要发送到仪器的ASCII命令,然后得到_Status Register Byte_
,但似乎没有任何可行的。
如果有人提出建议,关于如何通过Python / VISA传递串行轮询功能,这可以解决我的问题。
答案 0 :(得分:2)
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