From 6047ceac89d493b383532c805dc5d40a2080a8f8 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 7 Oct 2026 12:22:00 +0300 Subject: [PATCH] Pause automatic waveform transfers on hardware Stop --- python/set_devices/tektronix.py | 11 +++++++++++ python/set_devices/tektronix_session.py | 10 +++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/python/set_devices/tektronix.py b/python/set_devices/tektronix.py index c86d7fb..0278c8c 100644 --- a/python/set_devices/tektronix.py +++ b/python/set_devices/tektronix.py @@ -86,6 +86,17 @@ class DPO4034: raise ValueError("Выберите канал CH1…CH4") return channel + def is_running(self): + """Read hardware Run/Stop without changing acquisition or transferring data.""" + if self.instrument is None: + raise RuntimeError("Прибор не подключён") + state = self.instrument.query("ACQUIRE:STATE?").strip().upper() + if state in ("0", "OFF", "STOP"): + return False + if state in ("1", "ON", "RUN"): + return True + raise ValueError("Некорректное состояние сбора: " + state) + def settings(self, channel="CH1"): self._channel(channel) if self.instrument is None: diff --git a/python/set_devices/tektronix_session.py b/python/set_devices/tektronix_session.py index d29da06..537f295 100644 --- a/python/set_devices/tektronix_session.py +++ b/python/set_devices/tektronix_session.py @@ -42,9 +42,13 @@ class ScopeSession: if action == "shutdown": break try: - if action == "capture" and len(args) == 4: - value = client.capture(*args[:3]) - value = CaptureFrame(value, prepare_preview(value, args[3])) + if action == "capture" and len(args) in (4, 5): + automatic = len(args) == 5 and args[4] + if automatic and not client.is_running(): + value = None + else: + value = client.capture(*args[:3]) + value = CaptureFrame(value, prepare_preview(value, args[3])) elif action == "export": filename, waves = args with open(filename, "w", newline="", encoding="utf-8-sig") as stream: