gpt4 book ai didi

python - VISA协议(protocol)下操作之间等待一段时间正常吗?

转载 作者:行者123 更新时间:2023-11-30 23:10:21 25 4
gpt4 key购买 nike

我正在使用pyvisa对符合 SCPI 协议(protocol)的电源进行编程,如下所示:

power = get_power()
power.write('VOLTage 24.000')
time.sleep(1) # **Must delay**
power.query(u'VOLTage?')
disconnect_power(power)

一切都很好,但是如果我在“write”和“query”之间没有等待,就会出现超时错误,就像这样:

raise errors.VisaIOError(ret_value) pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

在VISA协议(protocol)下对此类仪器进行编程时,操作之间存在延迟是否正常?如果没有,通常的方法是什么?或者有类似Event的机制吗?如果是,我如何确定延迟时间?

最佳答案

事实上,这是编程SCPI时的常见问题。乐器。实际上,SCPI 提供了多种同步方法,请参见 IEEE-488.2.87 第 12 节:设备/ Controller 同步技术。和here是良好 SCPI 编程实践的摘要,尽管它是针对专有仪器的,但一些技巧适用于所有 SCPI 设备。

所以关键问题是:在上一个“VOLTage 24.000”)完成之前,电源无法处理下一个“Program Message”(详细信息请参阅IEEE-488.2.87)。如果您在没有适当延迟的情况下强行执行此操作,处理将被中断。

SCPI 提供同步命令“*OPC?”等待所有命令完成之前。当每个命令完成时,它将在输出缓冲区中放入 1。所以我们可以只附加“*OPC?”到前面的程序消息,然后等待读取完成,然后我们查询,如下所示:

power = get_power()
power.write('VOLTage 24.000;*OPC?')
power.read()
power.query(u'VOLTage?')
disconnect_power(power)

就是这样。

关于python - VISA协议(protocol)下操作之间等待一段时间正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30725746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com