这是我第一次尝试使用Pyvisa
,以便使用RS232
连接(使用USB端口)与Agilent 34970A
通信。
这就是发生在我身上的事情,插入基本的第一行:
IN: import visa
IN: rm=visa.ResourceManager()
IN: print rm.list_resources()
(u'ASRL4::INSTR',)
IN: inst=rm.open_resource("ASRL4::INSTR")
IN: print inst.query("*IDN?")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:Anaconda2libsite-packagespyvisa-1.8-py2.7.eggpyvisaresourcesmessagebased.py", line 407, in query
return self.read()
File "C:Anaconda2libsite-packagespyvisa-1.8-py2.7.eggpyvisaresourcesmessagebased.py", line 332, in read
message = self.read_raw().decode(enco)
File "C:Anaconda2libsite-packagespyvisa-1.8-py2.7.eggpyvisaresourcesmessagebased.py", line 306, in read_raw
chunk, status = self.visalib.read(self.session, size)
File "C:Anaconda2libsite-packagespyvisa-1.8-py2.7.eggpyvisactwrapperfunctions.py", line 1582, in read
ret = library.viRead(session, buffer, count, byref(return_count))
File "C:Anaconda2libsite-packagespyvisa-1.8-py2.7.eggpyvisactwrapperhighlevel.py", line 188, in _return_handler
raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
每次我尝试读取值时都会发生此超时错误。我还加了一个更大的暂停时间,但什么都没有,我徒劳地等了几分钟。你知道这个问题吗?
您需要匹配您的波特率。在您的34970A或pyVisa的属性中。
签证的默认金额是9600。
https://buildmedia.readthedocs.org/media/pdf/pyvisa/master/pyvisa.pdf
这里有一个例子,如果你想把它改为115200,34970A上的最高波特率。
inst = rm.open_resource('ASRL4::INSTR')
inst.baud_rate = 115200
尝试将RS232设置协议更改为XON/XOFF。