Python串行轮询函数

Python串行轮询函数,python,serial-port,polling,visa,gpib,Python,Serial Port,Polling,Visa,Gpib,我的GPIB仪器有问题。这是一个相当古老的版本,被称为IEEE-488-1978。我一直在尝试获取该版本IEEE-488的参考手册,但没有成功 该问题涉及这样一个事实,即为了读取仪器的状态寄存器,它需要一个串行轮询功能(如其参考手册所述)。我不知道如何在Python中使用PyVISA这样做 例如,我用来从设备读取的是\u仪器。询问(“RV”)\u,其中\u RV表示\u读取版本。另外,对于写入诸如温度之类的参数,我需要\u instrument.write(“ST20.00”)\u,其中\u S

我的GPIB仪器有问题。这是一个相当古老的版本,被称为IEEE-488-1978。我一直在尝试获取该版本IEEE-488的参考手册,但没有成功

该问题涉及这样一个事实,即为了读取仪器的状态寄存器,它需要一个串行轮询功能(如其参考手册所述)。我不知道如何在Python中使用PyVISA这样做

例如,我用来从设备读取的是
\u仪器。询问(“RV”)\u
,其中
\u RV
表示
\u读取版本
。另外,对于写入诸如温度之类的参数,我需要
\u instrument.write(“ST20.00”)\u
,其中
\u ST20.00\u
表示
\u将温度设置为20.00 Celcius\u

我一直试图找到一个ASCII命令,用
\u ask\u
Python/VISA命令发送到仪器,并返回
\u状态寄存器字节
,但似乎没有什么可行的方法


如果有人对如何使用Python/VISA传递串行轮询函数有任何建议,这可以解决我的问题。

1975年,IEEE创建了IEEE-488-1975标准,描述了数字通信总线,有时称为。1978年对其进行了修订。它描述了硬件接口,但没有描述命令和数据的格式。1987年,他们引入了描述标准代码、格式、协议和通用命令的IEEE-488.2-1987标准

现在回到你的问题上来

pyvisa
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

谢谢你,这工作做得很好。我假设vpp43.read_stb正在进行我所寻找的串行轮询。