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

2024-04-25 05:40:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过python在x86_64linux机器(centos7)上控制keithley2410。我使用的是python2.7.5、NI-visa16和pyvisa1.8。Keithley通过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.

Tags: rminpyselfreadlibpackagesusr
2条回答

谢谢你的建议,但似乎我需要明确地设置波特率。在

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

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

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

就在你的open_resource()电话之后。在

相关问题 更多 >