- Disable frequency input while sweeping

- Inform the user if there's insufficient resolution to find a -3dB point
pull/36/head
Rune Broberg 2019-10-07 15:29:34 +02:00
rodzic 6c54d96904
commit 56db77afed
2 zmienionych plików z 41 dodań i 7 usunięć

Wyświetl plik

@ -128,10 +128,14 @@ class LowPassAnalysis(Analysis):
break
cutoff_frequency = self.app.data21[cutoff_location].freq
cutoff_gain = NanoVNASaver.gain(self.app.data21[cutoff_location]) - pass_band_db
if cutoff_gain < -4:
logger.debug("Cutoff frequency found at %f dB - insufficient data points for true -3 dB point.",
cutoff_gain)
logger.debug("Found true cutoff frequency at %d", cutoff_frequency)
self.cutoff_label.setText(NanoVNASaver.formatFrequency(cutoff_frequency))
self.cutoff_label.setText(NanoVNASaver.formatFrequency(cutoff_frequency) +
" (" + str(round(cutoff_gain, 1)) + " dB)")
self.app.markers[1].setFrequency(str(cutoff_frequency))
six_db_location = -1
@ -270,10 +274,15 @@ class HighPassAnalysis(Analysis):
break
cutoff_frequency = self.app.data21[cutoff_location].freq
cutoff_gain = NanoVNASaver.gain(self.app.data21[cutoff_location]) - pass_band_db
if cutoff_gain < -4:
logger.debug("Cutoff frequency found at %f dB - insufficient data points for true -3 dB point.",
cutoff_gain)
logger.debug("Found true cutoff frequency at %d", cutoff_frequency)
self.cutoff_label.setText(NanoVNASaver.formatFrequency(cutoff_frequency))
self.cutoff_label.setText(NanoVNASaver.formatFrequency(cutoff_frequency) +
" (" + str(round(cutoff_gain, 1)) + " dB)")
self.app.markers[1].setFrequency(str(cutoff_frequency))
six_db_location = -1
@ -463,10 +472,17 @@ class BandPassAnalysis(Analysis):
break
lower_cutoff_frequency = self.app.data21[lower_cutoff_location].freq
lower_cutoff_gain = NanoVNASaver.gain(self.app.data21[lower_cutoff_location]) - pass_band_db
if lower_cutoff_gain < -4:
logger.debug("Lower cutoff frequency found at %f dB - insufficient data points for true -3 dB point.",
lower_cutoff_gain)
logger.debug("Found true lower cutoff frequency at %d", lower_cutoff_frequency)
self.lower_cutoff_label.setText(NanoVNASaver.formatFrequency(lower_cutoff_frequency))
self.lower_cutoff_label.setText(NanoVNASaver.formatFrequency(lower_cutoff_frequency) +
" (" + str(round(lower_cutoff_gain, 1)) + " dB)")
self.app.markers[1].setFrequency(str(lower_cutoff_frequency))
upper_cutoff_location = -1
@ -479,14 +495,19 @@ class BandPassAnalysis(Analysis):
break
upper_cutoff_frequency = self.app.data21[upper_cutoff_location].freq
upper_cutoff_gain = NanoVNASaver.gain(self.app.data21[upper_cutoff_location]) - pass_band_db
if upper_cutoff_gain < -4:
logger.debug("Upper cutoff frequency found at %f dB - insufficient data points for true -3 dB point.",
upper_cutoff_gain)
logger.debug("Found true upper cutoff frequency at %d", upper_cutoff_frequency)
self.upper_cutoff_label.setText(NanoVNASaver.formatFrequency(upper_cutoff_frequency))
self.upper_cutoff_label.setText(NanoVNASaver.formatFrequency(upper_cutoff_frequency) +
" (" + str(round(upper_cutoff_gain, 1)) + " dB)")
self.app.markers[2].setFrequency(str(upper_cutoff_frequency))
span = upper_cutoff_frequency - lower_cutoff_frequency
center_frequency = lower_cutoff_frequency + span/2
center_frequency = math.sqrt(lower_cutoff_frequency * upper_cutoff_frequency)
q = center_frequency / span
self.span_label.setText(NanoVNASaver.formatFrequency(span))
@ -585,4 +606,8 @@ class BandPassAnalysis(Analysis):
upper_sixty_db_cutoff_frequency = self.app.data21[upper_sixty_db_location].freq
self.upper_sixty_db_label.setText(NanoVNASaver.formatFrequency(upper_sixty_db_cutoff_frequency))
self.result_label.setText("Analysis complete (" + str(len(self.app.data)) + " points)")
if upper_cutoff_gain < -4 or lower_cutoff_gain < -4:
self.result_label.setText("Analysis complete (" + str(len(self.app.data)) + " points)\n" +
"Insufficient data for analysis. Increase segment count.")
else:
self.result_label.setText("Analysis complete (" + str(len(self.app.data)) + " points)")

Wyświetl plik

@ -648,6 +648,13 @@ class NanoVNASaver(QtWidgets.QWidget):
def setSweep(self, start, stop):
self.writeSerial("sweep " + str(start) + " " + str(stop) + " 101")
def toggleSweepSettings(self, disabled):
self.sweepStartInput.setDisabled(disabled)
self.sweepEndInput.setDisabled(disabled)
self.sweepSpanInput.setDisabled(disabled)
self.sweepCenterInput.setDisabled(disabled)
self.sweepCountInput.setDisabled(disabled)
def sweep(self):
# Run the serial port update
if not self.serial.is_open:
@ -657,6 +664,7 @@ class NanoVNASaver(QtWidgets.QWidget):
self.sweepProgressBar.setValue(0)
self.btnSweep.setDisabled(True)
self.btnStopSweep.setDisabled(False)
self.toggleSweepSettings(True)
for m in self.markers:
m.resetLabels()
self.s11_min_rl_label.setText("")
@ -872,6 +880,7 @@ class NanoVNASaver(QtWidgets.QWidget):
self.sweepProgressBar.setValue(100)
self.btnSweep.setDisabled(False)
self.btnStopSweep.setDisabled(True)
self.toggleSweepSettings(True)
def updateCenterSpan(self):
fstart = self.parseFrequency(self.sweepStartInput.text())