Search code examples
pythonvisapyvisa

Simple *IDN? query resulted in "Timeout expired before operation completed"


I tried to do a simple query to my LAB instrument by:

>>> import visa
>>> rm = visa.ResourceManager()
>>> viavi = rm.open_resource("TCPIP0::10.0.2.76::5001::SOCKET")
>>> print(viavi.query("*IDN?"))

The result was:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files\Python35\lib\site-packages\pyvisa\resources\messagebase
d.py", line 407, in query
    return self.read()
  File "C:\Program Files\Python35\lib\site-packages\pyvisa\resources\messagebase
d.py", line 332, in read
    message = self.read_raw().decode(enco)
  File "C:\Program Files\Python35\lib\site-packages\pyvisa\resources\messagebase
d.py", line 306, in read_raw
    chunk, status = self.visalib.read(self.session, size)
  File "C:\Program Files\Python35\lib\site-packages\pyvisa\ctwrapper\functions.p
y", line 1582, in read
    ret = library.viRead(session, buffer, count, byref(return_count))
  File "C:\Program Files\Python35\lib\site-packages\pyvisa\ctwrapper\highlevel.p
y", line 188, in _return_handler
    raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before op
eration completed.

According to what I learned till now (from the experience of others). This timeout error is somehow related to line termination ("\n"). How can I solve this problem ?


Solution

  • I found out that it was all related to the read_termination. My LAB instrument simply terminated its response by a '\n'. While my script was looking for a '\r' all that time.