2017-04-06 70 views
0

私は、Keithley 2410をx86_64 Linuxマシン(CentOS 7)でPython経由で制御しようとしています。私はPython 2.7.5、NI-VISA 16、PyVISA 1.8を使用しています。 KeithleyはRS232-to-USBケーブルを介してコンピュータに接続され、RS232通信用に設定されています(ボーレート57600、ビット8、パリティなし、ターミネータ、フローCtrlなし)。私はケースレーを照会しようとすると、以下のように私は、タイムアウトエラーを取得: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 
関連する問題