【问题标题】:Timeout error with PyVISA -- communicating with Agilent 34970A throug RS232 (USB)PyVISA 超时错误——通过 RS232 (USB) 与 Agilent 34970A 通信
【发布时间】:2016-05-12 09:04:46
【问题描述】:

这是我第一次尝试使用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:\Anaconda2\lib\site-packages\pyvisa-1.8-py2.7.egg\pyvisa\resources\messagebased.py", line 407, in query
    return self.read()

  File "C:\Anaconda2\lib\site-packages\pyvisa-1.8-py2.7.egg\pyvisa\resources\messagebased.py", line 332, in read
    message = self.read_raw().decode(enco)

  File "C:\Anaconda2\lib\site-packages\pyvisa-1.8-py2.7.egg\pyvisa\resources\messagebased.py", line 306, in read_raw
    chunk, status = self.visalib.read(self.session, size)

  File "C:\Anaconda2\lib\site-packages\pyvisa-1.8-py2.7.egg\pyvisa\ctwrapper\functions.py", line 1582, in read
    ret = library.viRead(session, buffer, count, byref(return_count))

  File "C:\Anaconda2\lib\site-packages\pyvisa-1.8-py2.7.egg\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.

每次我尝试读取值时都会发生此超时错误。我还施加了更大的超时时间,但什么也没做,我等了几分钟都是徒劳的。对这个问题有什么想法吗?

【问题讨论】:

    标签: python serial-port timeout


    【解决方案1】:

    您需要匹配您的波特率。在您的 34970A 或 pyVisa 的属性中。

    visa自带的默认是9600。

    https://buildmedia.readthedocs.org/media/pdf/pyvisa/master/pyvisa.pdf

    如果您想将其更改为 115200,这是 34970A 上的最高波特率,这里有一个示例。

    inst = rm.open_resource('ASRL4::INSTR')
    inst.baud_rate = 115200
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多