From 017a311d491b8c66d31d9135f0eae1b41e57df2e Mon Sep 17 00:00:00 2001 From: goldstar611 Date: Mon, 20 Apr 2020 22:41:53 -0500 Subject: [PATCH 1/2] Add auto pause checkbox feature to stop RF output after sweep --- NanoVNASaver/Hardware.py | 9 +++++++++ NanoVNASaver/NanoVNASaver.py | 7 +++++++ NanoVNASaver/SweepWorker.py | 14 ++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/NanoVNASaver/Hardware.py b/NanoVNASaver/Hardware.py index 89d65e8c..530de40d 100644 --- a/NanoVNASaver/Hardware.py +++ b/NanoVNASaver/Hardware.py @@ -192,6 +192,9 @@ def writeSerial(self, command): def setSweep(self, start, stop): self.writeSerial("sweep " + str(start) + " " + str(stop) + " 101") + def pauseSweep(self): + self.writeSerial("pause") + class InvalidVNA(VNA): name = "Invalid" @@ -201,6 +204,9 @@ def __init__(self): def setSweep(self, start, stop): return + + def pauseSweep(self): + return def resetSweep(self, start, stop): return @@ -353,6 +359,9 @@ def setSweep(self, start, stop): self.writeSerial("sweep " + str(start) + " " + str(stop) + " 101") sleep(1) + def pauseSweep(self): + self.writeSerial("pause") + class NanoVNA_H(NanoVNA): name = "NanoVNA-H" diff --git a/NanoVNASaver/NanoVNASaver.py b/NanoVNASaver/NanoVNASaver.py index af6c3e96..9e4c601b 100644 --- a/NanoVNASaver/NanoVNASaver.py +++ b/NanoVNASaver/NanoVNASaver.py @@ -2050,11 +2050,14 @@ def __init__(self, app: NanoVNASaver): self.single_sweep_radiobutton = QtWidgets.QRadioButton("Single sweep") self.continuous_sweep_radiobutton = QtWidgets.QRadioButton("Continuous sweep") self.averaged_sweep_radiobutton = QtWidgets.QRadioButton("Averaged sweep") + self.auto_pause_sweep_checkbox = QtWidgets.QCheckBox("Pause hardware sweep after completion") settings_layout.addWidget(self.single_sweep_radiobutton) self.single_sweep_radiobutton.setChecked(True) settings_layout.addWidget(self.continuous_sweep_radiobutton) settings_layout.addWidget(self.averaged_sweep_radiobutton) + settings_layout.addWidget(self.auto_pause_sweep_checkbox) + self.auto_pause_sweep_checkbox.setChecked(False) self.averages = QtWidgets.QLineEdit("3") self.truncates = QtWidgets.QLineEdit("0") @@ -2066,6 +2069,7 @@ def __init__(self, app: NanoVNASaver): self.continuous_sweep_radiobutton.toggled.connect( lambda: self.app.worker.setContinuousSweep(self.continuous_sweep_radiobutton.isChecked())) + self.auto_pause_sweep_checkbox.toggled.connect(self.updateAutoPauseSweep) self.averaged_sweep_radiobutton.toggled.connect(self.updateAveraging) self.averages.textEdited.connect(self.updateAveraging) self.truncates.textEdited.connect(self.updateAveraging) @@ -2162,6 +2166,9 @@ def updateAveraging(self): self.app.worker.setAveraging(self.averaged_sweep_radiobutton.isChecked(), self.averages.text(), self.truncates.text()) + + def updateAutoPauseSweep(self): + self.app.worker.setAutoPauseSweep(self.auto_pause_sweep_checkbox.isChecked()) class BandsWindow(QtWidgets.QWidget): diff --git a/NanoVNASaver/SweepWorker.py b/NanoVNASaver/SweepWorker.py index ce939d2d..55a402f4 100644 --- a/NanoVNASaver/SweepWorker.py +++ b/NanoVNASaver/SweepWorker.py @@ -53,6 +53,7 @@ def __init__(self, app: NanoVNASaver): self.stopped = False self.running = False self.continuousSweep = False + self.autoPauseSweep = False self.averaging = False self.averages = 3 self.truncates = 0 @@ -179,6 +180,9 @@ def run(self): self.vna.resetSweep(RFTools.parseFrequency(self.app.sweepStartInput.text()), RFTools.parseFrequency(self.app.sweepEndInput.text())) + if self.autoPauseSweep: + self.vna.pauseSweep() + self.percentage = 100 logger.debug("Sending \"finished\" signal") self.signals.finished.emit() @@ -329,6 +333,8 @@ def readSegment(self, start, stop): # S21 values21 = self.readData("data 1") + if self.autoPauseSweep: + self.vna.pauseSweep() return frequencies, values11, values21 def readData(self, data): @@ -371,6 +377,8 @@ def readData(self, data): raise NanoVNAValueException("Failed reading " + str(data) + " " + str(count) + " times.\n" + "Data outside expected valid ranges, or in an unexpected format.\n\n" + "You can disable data validation on the device settings screen.") + if self.autoPauseSweep: + self.vna.pauseSweep() return returndata def readFreq(self): @@ -399,6 +407,9 @@ def readFreq(self): raise NanoVNAValueException("Failed reading frequencies " + str(count) + " times.") else: returnfreq.append(int(f)) + + if self.autoPauseSweep: + self.vna.pauseSweep() return returnfreq def setContinuousSweep(self, continuous_sweep: bool): @@ -411,6 +422,9 @@ def setAveraging(self, averaging: bool, averages: str, truncates: str): self.truncates = int(truncates) except ValueError: return + + def setAutoPauseSweep(self, auto_pause_sweep: bool): + self.autoPauseSweep = auto_pause_sweep def setVNA(self, vna): self.vna = vna From 956084edf7b42737c6268b9846437f740243883a Mon Sep 17 00:00:00 2001 From: goldstar611 Date: Wed, 22 Apr 2020 10:33:15 -0500 Subject: [PATCH 2/2] Change "hardware sweep" to "hardware stimulus" --- NanoVNASaver/NanoVNASaver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NanoVNASaver/NanoVNASaver.py b/NanoVNASaver/NanoVNASaver.py index 9e4c601b..d7b87971 100644 --- a/NanoVNASaver/NanoVNASaver.py +++ b/NanoVNASaver/NanoVNASaver.py @@ -2050,7 +2050,7 @@ def __init__(self, app: NanoVNASaver): self.single_sweep_radiobutton = QtWidgets.QRadioButton("Single sweep") self.continuous_sweep_radiobutton = QtWidgets.QRadioButton("Continuous sweep") self.averaged_sweep_radiobutton = QtWidgets.QRadioButton("Averaged sweep") - self.auto_pause_sweep_checkbox = QtWidgets.QCheckBox("Pause hardware sweep after completion") + self.auto_pause_sweep_checkbox = QtWidgets.QCheckBox("Pause hardware stimulus after completion") settings_layout.addWidget(self.single_sweep_radiobutton) self.single_sweep_radiobutton.setChecked(True)