2017-04-06 4 views
0

저는 Keithley 2410을 x86_64 리눅스 머신 (CentOS 7)에서 파이썬을 통해 제어하려고합니다. 파이썬 2.7.5, NI-VISA 16 및 PyVISA 1.8을 사용하고 있습니다. Keithley는 RS232-to-USB 케이블을 통해 컴퓨터에 연결되며 RS232 통신 (baud 57600, 비트 8, 패리티 없음, 터미네이터, flow-ctrl none) 매개 변수로 구성됩니다. 아래 그림과 같이 내가 시간 제한 오류가 키 슬리을 조회 할 때 :Keithley 2410 및 PyVISA - VI_ERROR_TMO : 작업 완료까지 시간이 만료되었습니다.

>>> 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을'을 수신 할 수 없습니다 명령을 구문 분석하기 시작해야합니다. 바로 open_resource() 호출 후 Try doing

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

.

0

제안 해 주셔서 감사합니다.하지만 명시 적으로 전송 속도를 설정해야하는 것처럼 보입니다.

rm = visa.ResourceManager() 
smu = rm.open_resource("ASRL2::INSTR") 
smu.baud_rate = 57600 
관련 문제