PyVISA SCPI команды и запросы (проблема с обновлением значения)

ОБНОВЛЕНИЕ: Кажется, что работает "ОК", это я... хотя я не уверен, почему некоторые ответы имеют /r/n в конце, а некоторые нет. Я явно выключил Handshaking...

Пример команд / запросов / ответов приведен ниже.

Вывод команды Pyvisa SCPI

** Я использую интерфейс PyVisa для связи с датчиком.

Мне нужно отправить команду или сделать запрос три раза, прежде чем произойдет изменение в выводе..

Нужно ли добавлять команду ожидания перед продолжением, я думал, что команды SCPI блокируются (синхронно, чтобы говорить).. Пожалуйста, дайте мне знать, если я делаю что-то не так... вот несколько моих команд:**

    >>> import visa
    >>> ins = visa.ResourceManager()
    >>> print(ins.list_resources())
    ('ASRL1::INSTR', 'ASRL3::INSTR', 'ASRL6::INSTR', 'ASRL10::INSTR')
    >>> Energy_sense = ins.open_resource('ASRL6::INSTR')
    >>> print(Energy_sense.query('*IDN?'))
     Coherent, Inc - EnergyMax USB - V1.2 - Jan 27 2011


    >>> Energy_sense.write(":CONF:WAVE 780")
     (16, <StatusCode.success: 0>)
    >>> print(Energy_sense.query(':CONF:WAVE?'))
    780


     >>> Energy_sense.write(":SYST:COMM:HAND OFF")
     (21, <StatusCode.success: 0>)
     >>> 
     >>> Energy_sense.write(":CONF:MEAS:STAT ON")
     (20, <StatusCode.success: 0>)
     >>> Energy_sense.write(":CONF:STAT:BSIZ 1000")
     (22, <StatusCode.success: 0>)
      >>> Energy_sense.query(":CONF:STAT:BSIZ?")
      '1000\r\n'
      >>> Energy_sense.write(":CONF:STAT:STAR")
      (17, <StatusCode.success: 0>)
      >>> Energy_sense.query(":READ?")
       '3.728E-5,3.150E-5,4.358E-5,2.597E-6\r\n'
      >>> 
      >>> Energy_sense.query(":CONF:STAT:BSIZ?")
      '1000\r\n'
      >>> 
      >>> print(Energy_sense.query(':CONF:WAVE?'))
      780


      >>> 

Вы можете найти остальные команды на картинке.

1 ответ

Вы правы, команды VISA блокируются, поэтому вам не нужно ждать после команды VISA. Вы установили тайм-аут? Это слишком коротко? Некоторым устройствам может потребоваться больше времени для ответа на команды, чем другим.

import visa
self._rm = visa.ResourceManager()
self._visa_conn = self._rm.open_resource('GPIB0::%s::INSTR' % instr_addr)
self._visa_conn.timeout = 1000 # in milliseconds

Вы можете удалить '\n' с помощью:

string.rstrip('\n')
Другие вопросы по тегам