Keithley 2410 和 PyVISA - VI_ERROR_TMO:在操作完成前超时

Posted

技术标签:

【中文标题】Keithley 2410 和 PyVISA - VI_ERROR_TMO:在操作完成前超时【英文标题】:Keithley 2410 and PyVISA - VI_ERROR_TMO: Timeout expired before operation completed 【发布时间】:2017-04-06 13:04:09 【问题描述】:

我正在尝试通过 python 在 x86_64 linux 机器 (CentOS 7) 上控制 Keithley 2410。我正在使用 python 2.7.5、NI-VISA 16 和 PyVISA 1.8。吉时利通过 RS232 转 USB 电缆连接到计算机,并配置为 RS232 通信(使用参数:波特 57600、位 8、奇偶校验无、终止符、流控制无)。当我尝试查询 Keithley 时,出现超时错误,如下所示:

>>> import visa
>>> rm = visa.ResourceManager()
>>> print(rm.list_resources())
(u'ASRL1::INSTR', u'ASRL2::INSTR')
>>> keithley = rm.open_resource("ASRL2::INSTR")
>>> print(keithley.query('*IDN?'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/pyvisa/resources/messagebased.py", line 407, in query
return self.read()
File "/usr/lib/python2.7/site-packages/pyvisa/resources/messagebased.py", line 332, in read
message = self.read_raw().decode(enco)
File "/usr/lib/python2.7/site-packages/pyvisa/resources/messagebased.py", line 306, in read_raw
chunk, status = self.visalib.read(self.session, size)
File "/usr/lib/python2.7/site-packages/pyvisa/ctwrapper/functions.py", line 1582, in read
ret = library.viRead(session, buffer, count, byref(return_count))
File "/usr/lib/python2.7/site-packages/pyvisa/ctwrapper/highlevel.py", line 188, in _return_handler
raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

【问题讨论】:

【参考方案1】:

PyVISA 1.8 应该默认为串行的 '\r' 行终止,因此您的 2410 可能没有收到它需要启动它解析命令的 '\n'。 Try doing

keithley.write_termination = '\n'
keithley.read_termination = '\n'

在您拨打open_resource() 之后。

【讨论】:

【参考方案2】:

感谢您的建议,但似乎我需要明确设置波特率。

rm = visa.ResourceManager()
smu = rm.open_resource("ASRL2::INSTR")
smu.baud_rate = 57600

【讨论】:

以上是关于Keithley 2410 和 PyVISA - VI_ERROR_TMO:在操作完成前超时的主要内容,如果未能解决你的问题,请参考以下文章

PyVISA - 无法让 GPIB 仪器以编程方式进入远程模式

PyVISA介绍

Kivy & pyvisa - 如何在 GPIB 连接后将 ObjectProperty 设置为 None?

Anritsu PyVISA 问题

python 通过RS-232 + SCPI从Keithley 2015读取DCV

PyVISA RS232 超时错误(安捷伦电源)