我使用的是peaktech 4046:160MHz函数/任意波形发生器。我在pyton上开发,我正在使用pyvisa库。 连接已建立,生成器将应用查询。但它会生成以下错误并停止程序(错误发生后它不会执行任何操作)
代码如下:
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource('TCPIP0::130.79.192.123::5025::SOCKET')
print(inst.session)
print(inst.io_protocol)
inst.query("source1:function squ")
这是我在终端里的东西:
2
IOProtocol.normal
Traceback (most recent call last):
File "c:\Users\Labo préclinique\Desktop\ProjetPython\importation de librairies\Forum.py", line 7, in <module>
inst.query("source1:function squ ")
File "C:\Users\Labo préclinique\AppData\Local\Programs\Python\Python39\lib\site-packages\pyvisa\resources\messagebased.py", line 644, in query
return self.read()
File "C:\Users\Labo préclinique\AppData\Local\Programs\Python\Python39\lib\site-packages\pyvisa\resources\messagebased.py", line 486, in read
message = self._read_raw().decode(enco)
File "C:\Users\Labo préclinique\AppData\Local\Programs\Python\Python39\lib\site-packages\pyvisa\resources\messagebased.py", line 442, in _read_raw
chunk, status = self.visalib.read(self.session, size)
File "C:\Users\Labo préclinique\AppData\Local\Programs\Python\Python39\lib\site-packages\pyvisa\ctwrapper\functions.py", line 2337, in read
ret = library.viRead(session, buffer, count, byref(return_count))
File "C:\Users\Labo préclinique\AppData\Local\Programs\Python\Python39\lib\site-packages\pyvisa\ctwrapper\highlevel.py", line 222, in _return_handler
return self.handle_return_value(session, ret_value) # type: ignore
File "C:\Users\Labo préclinique\AppData\Local\Programs\Python\Python39\lib\site-packages\pyvisa\highlevel.py", line 251, in handle_return_value
raise errors.VisaIOError(rv)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
我试过(没有用): -将插座更换为仪表 -使用timout长得多(inst.timeout=10000) -正在添加结束项(已尝试\n和\r):inst.read\u termination='\n'
所以我不知道该怎么办了。。。我需要发出多个命令,因此程序不能停止得太快。我怀疑我的函数生成器没有返回任何内容,但我不知道如何确保情况属实
我想知道的是:如果连接建立良好并且请求在设备上执行,为什么会出现超时错误?如何以适当的方式执行请求?
提前谢谢你
PS:我知道如何捕捉错误(使用try-except),但我宁愿得到一个Ok的答案,而不是KO的答案
尝试按获取资源列表
并检查其中的资源
TCPIP0::130.79.192.123::5025::SOCKET
然后检查来自tutorial的对资源的标准请求:
query
是写操作发送消息的缩写,后跟读操作。因此,您可以通过两个操作来指定错误(读或写错误?):请检查查询
source1:function squ
的名称,因为我在documentation中没有看到它。也许您应该使用"source1:am:interanal:function square
(文档第57页)或更改squ->;正方形因此documentation,您可以尝试通过
Also,您可以添加
read_termination
/write_termination
选项来指定您将在最后一个机会是改变选项query_delay and send_end
相关问题 更多 >
编程相关推荐