# Tektronix DPO4034 Независимый от Qt драйвер: `python/set_devices/tektronix.py`. Установка: `pip install "setcorp-templates[tektronix]"` из пакета templates. Нужна системная библиотека NI-VISA или TekVISA соответствующей разрядности. Для Python 3.8 / Win7 выбирайте совместимую версию PyVISA и VISA runtime. ## Подключение - Ethernet: включить LAN на приборе, проверить IP и доступность из сети ПК. Ресурс VISA `TCPIP0::192.168.1.100::inst0::INSTR` (VXI-11). В SETGUI можно ввести только IP/hostname или полное имя TCPIP INSTR. - GPIB: контроллер GPIB на ПК с установленным драйвером, кабель GPIB, адаптер TEK-USB-488, USB device port осциллографа. У адаптера должно быть питание. Адрес задаётся на приборе в Utility → I/O → GPIB. Пример ресурса `GPIB0::1::INSTR`; адреса 0…30, номер контроллера отдельно. ## Реализованный обмен Команды SCPI с LF. После открытия `*IDN?` проверяет производителя и точную модель DPO4034; `HEADER OFF` отключает заголовки ответов. Для снимка запрашивается `ACQUIRE:STATE?`, затем отправляется `ACQUIRE:STATE STOP` и ожидается `*OPC?`. Это позволяет читать несколько каналов одной остановленной записи. Для каждого CH1…CH4: 1. `SELECT:CHn?`: канал должен быть включён пользователем на приборе. 2. `DATA:SOURCE CHn`, `DATA:ENCDG RIBINARY`, `DATA:WIDTH 2`, `DATA:START 1`, `DATA:STOP N`. 3. Чтение `WFMOUTPRE:PT_FMT?`: поддерживается Y; ENV отклоняется явно. 4. Чтение `WFMOUTPRE:XINCR?`, `XZERO?`, `PT_OFF?`, `YMULT?`, `YOFF?`, `YZERO?`, `YUNIT?`, `NR_PT?` (каждое имя с префиксом `WFMOUTPRE:`). 5. `CURVE?`: IEEE 488.2 definite-length binary block, знаковые 16-битные отсчёты, старший байт первым. Разбор блока выполняет PyVISA, в том числе при разделении ответа между транспортными пакетами. Для индекса i, начиная с нуля: `t[i] = XZERO + (i - PT_OFF) * XINCR` (секунды), `y[i] = YZERO + (raw[i] - YOFF) * YMULT` (единицы YUNIT). Проверяются конечность коэффициентов, положительный шаг времени и число полученных отсчётов. В `finally` восстанавливается RUN, если до снимка сбор шёл; исходное состояние STOP сохраняется. При ошибке UI закрывает сеанс. Тайм-аут операции VISA — 5 с. Драйвер не сбрасывает настройки прибора. Снимок читает текущую запись, не ожидает нового аппаратного триггера. DATA:STOP ограничивает начало записи, а не прореживает всю запись. В UI предел 250 000 точек на канал (1 млн суммарно). ## Пример ```python from set_devices.tektronix import DPO4034, resource_name scope = DPO4034() try: print(scope.connect(resource_name("Ethernet", "192.168.1.100"))) waveforms = scope.capture(["CH1", "CH2"], points=10000) finally: scope.close() ``` Источник команд и аппаратного подключения: [MSO4000 / DPO4000 Programmer Manual, 077024801](https://download.tek.com/manual/077024801web.pdf). Проверка с реальным прибором требуется для обоих интерфейсов; офлайн-тесты проверяют последовательность команд, масштабирование, ошибки и восстановление RUN.