我正在使用PyVisa/GPIB控制一个测试系统。该系统由两个独立的测试仪(A和B)和一台笔记本电脑组成。当接收到测试仪a的GPIB消息时,笔记本电脑会被动地监听测试仪a的GPIB消息
我使用以下代码被动地侦听来自测试仪A的事件:
rm = visa.ResourceManager()
con = "GPIB0::3"
tester_A = rm.get_instrument(con, timeout=5000)
while True:
event = None
try:
event = tester_A.read_raw()
except VisaIOError:
logger.warning("Timeout expired.")
if event != None:
# Do something
有没有更好的方法来监听和响应测试人员a的事件?有没有更好的方法通过GPIB控制这个系统?在
你所描述的方法是可行的,但正如你所经历的,如果你不太确定仪器什么时候会有反应,那就不太理想了。解决方案在于使用GPIB的服务请求(SRQ)功能。在
简言之,GPIB连接还提供各种状态寄存器,允许您快速检查,例如,仪器是否打开,是否发生错误等(pretty picture)。该寄存器中的一些位可以设置为在特定事件后(例如操作完成时)打开或关闭。这意味着你要告诉仪器执行一系列你认为需要一段时间的命令,然后在状态寄存器中翻转一个位,以表明它已经完成。在
在您的软件中,您可以做许多事情来利用此功能:
viWaitOnEvent
功能,允许您等待状态位指示操作完成-如果您需要停止所有执行,直到仪器进行测量,这是一个很好的解决方案。在相关问题 更多 >
编程相关推荐