Python SCPI, позволяющий избежать фиксированных задержек (проблема синхронизации)
Я использую анализатор параметров полупроводников Agilent 4155C. У меня проблема с контроллером / устройством. Я использую Python PyVisa для write
SCPI приказывает ему. Я также читаю данные прямо с машины с помощью PyVisa's query
команда.
Проблема заключается в том, что, как многие из вас могут знать, если вы отправите команду запроса в систему до того, как она завершит все свои операции, система выдаст ошибку, вызванную таймаутом / запросом. Я прочитал это руководство ( Manual Link) (в частности, страницы 10-12) и обнаружил, что люди используют цикл for с *CLS
, *OPC
, а также *ESR?
команды с командой сна, чтобы проверить вручную, все ли операции завершены.
Код ниже является частью кода, который я пытаюсь запустить. Предлагаемое решение из руководства не стало проблемой, потому что я не могу отправить *ESR?
Команда запроса без времени ожидания либо.
Примечание: ошибка тайм-аута появляется в instr.query("*ESR?")
линия.
...
instr.write(":FORM:DATA ASC")
instr.write("*CLS")
instr.write("*OPC")
ESRvalue = 0
while (ESRvalue & 1) == 0:
instr.query("*ESR?")
time.sleep(0.01)
I_unicode_data = instr.query(":DATA? 'ID' ")
V_unicode_data = instr.query(":DATA? 'VD' ")
I_raw_data = I_unicode_data.encode('utf-8')
V_raw_data = V_unicode_data.encode('utf-8')
...