【发布时间】:2012-05-16 09:29:42
【问题描述】:
我正在尝试在 Python 中导入 visa 并与 GPIB 交互以控制设备。
我使用的设备名称是"GPIB0::9::INSTR",我认为这应该没有问题。
我在 2.7.3 Python Shell 中运行了以下代码
>>> from visa import *
>>> a = instrument("GPIB0::9", timeout = 20)
>>> a.write("*IDN?")
>>> print a.read()
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
print a.read()
File "C:\Python27\lib\site-packages\pyvisa\visa.py", line 433, in read
return self._strip_term_chars(self.read_raw())
File "C:\Python27\lib\site-packages\pyvisa\visa.py", line 407, in read_raw
chunk = vpp43.read(self.vi, self.chunk_size)
File "C:\Python27\lib\site-packages\pyvisa\vpp43.py", line 840, in read
visa_library().viRead(vi, buffer, count, byref(return_count))
File "C:\Python27\lib\site-packages\pyvisa\vpp43.py", line 398, in check_status
raise visa_exceptions.VisaIOError, status
VisaIOError: VI_ERROR_TMO: Timeout expired before operation completed.
以上是系统给我的错误。
其实一开始我把Timeout设置为3,就说明了这个错误。但是我如上图将值改为20后,还是不行。
有人可以帮帮我吗?
【问题讨论】:
-
您是否尝试省略
timeout或设置timeout=None?根据pyvisa.sourceforge.net/pyvisa.html#sec-timeouts -
@jadkik94 好吧,正如你所说,在我将
timeout更改为None之后,系统似乎在无限循环中运行....timeout是指最大值吗?每条指令实际允许的时间? -
我猜。这是文档在超时部分中所说的。我不知道,这就是为什么它只是一个评论而不是答案。
-
@jadkik94 好的,谢谢你的 cmets。