Я использую pyvisa программировать источник питания, который соответствует протоколу ИМТП, как это:Можно ли ожидать некоторое время между операциями по протоколу VISA?
power = get_power()
power.write('VOLTage 24.000')
time.sleep(1) # **Must delay**
power.query(u'VOLTage?')
disconnect_power(power)
Все было в порядке, но если бы я не стал ждать, между «записи» и «запрос», то там была ошибкой таймаута:
raise errors.VisaIOError(ret_value) pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
Нормально ли задержка между операциями при программировании такого инструмента в соответствии с протоколом VISA? Если нет, то как обычно? Или есть какой-то механизм вроде Event? Если да, как мне решить время ожидания?
Похож на инструмент SCPI. Тайм-ауты являются общими, когда отправленные данные не поняты. Попробуйте запросить очередь ошибок после таймаута. Также смотрите сообщения, отображаемые на передней панели, если прибор имеет один. –
Как я понял, должен быть интервал между операциями для ответа на инструмент, интервал времени зависит от скорости передачи. – lengxuehx
Настройка таймаута сеанса должна быть достаточно длинной, чтобы инструмент мог прочитать ввод, выполнить несколько команд и ответить на запрос. Тайм-аут должен возникать только из-за серьезных проблем связи, скажем, 10 или 20 секунд. Конструкция стимула-ответа SCPI не позволяет прибору реагировать, когда он не понимает, что он получает. Вот почему вы можете получить тайм-аут из запроса, где на самом деле не проблема связи на уровне шины. –