Python VISA串行轮询功能

时间:2013-01-28 13:56:57

标签: python serial-port polling visa gpib

我的 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传递串行轮询功能,这可以解决我的问题。

1 个答案:

答案 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