add feature of continuous sweep and writing the data in file

pull/569/head
RozitaTeymourzadeh 2022-11-09 21:08:51 -08:00
rodzic 4730be28af
commit 04713d9674
4 zmienionych plików z 74 dodań i 20 usunięć

Wyświetl plik

@ -27,8 +27,9 @@ logger = logging.getLogger(__name__)
class SweepMode(Enum): class SweepMode(Enum):
SINGLE = 0 SINGLE = 0
CONTINOUS = 1 CONTINUOUS = 1
AVERAGE = 2 AVERAGE = 2
CONTINUOUS_FILE = 3
class Properties: class Properties:

Wyświetl plik

@ -125,31 +125,48 @@ class SweepWorker(QtCore.QRunnable):
def _run_loop(self) -> None: def _run_loop(self) -> None:
sweep = self.sweep sweep = self.sweep
j = 0
averages = (sweep.properties.averages[0] averages = (sweep.properties.averages[0]
if sweep.properties.mode == SweepMode.AVERAGE if sweep.properties.mode == SweepMode.AVERAGE
else 1) else 1)
logger.info("%d averages", averages) logger.info("%d averages", averages)
while True: while True:
j = 0 # define 0 for continuous count max_sweep = 0
for i in range(sweep.segments): for i in range(sweep.segments):
logger.debug("Sweep segment no %d", i) logger.debug("Sweep segment no %d", i)
if self.stopped: if self.stopped:
logger.debug("Stopping sweeping as signalled") logger.debug("Stopping sweeping as signalled")
break break
start, stop = sweep.get_index_range(i) start, stop = sweep.get_index_range(i)
logger.debug("Single mode ...") try:
freq, values11, values21 = self.readAveragedSegment( logger.debug("Single mode ...")
start, stop, averages) freq, values11, values21 = self.readAveragedSegment(
self.percentage = (i + 1) * 100 / sweep.segments start, stop, averages)
self.updateData(freq, values11, values21, i) self.percentage = (i + 1) * 100 / sweep.segments
if sweep.properties.mode != SweepMode.CONTINOUS: self.updateData(freq, values11, values21, i)
logger.debug("Continues mode ...") except ValueError as e:
freq, values11, values21 = self.readAveragedSegment( self.gui_error(str(e))
start, stop, averages) else:
self.percentage = j + 1 if sweep.properties.mode == SweepMode.CONTINUOUS_FILE:
self.updateData(freq, values11, values21, j) logger.debug("Continuous infile mode ...")
break try:
if self.stopped:
logger.debug("Stopping sweeping as signalled")
break
freq, values11, values21 = self.readAveragedSegment(
start, stop, averages)
max_sweep = max_sweep + 1
self.percentage = j + 1 # (i + 1) * 100 / sweep.segments
self.updateDataContinuouse(freq, values11, values21, j)
if max_sweep >= 100:
sweep.properties.mode = SweepMode.SINGLE
except ValueError as e:
self.gui_error(str(e))
continue
if sweep.properties.mode == SweepMode.CONTINUOUS:
logger.debug("Continuous mode ...")
continue
break
def init_data(self): def init_data(self):
self.data11 = [] self.data11 = []
@ -187,7 +204,34 @@ class SweepWorker(QtCore.QRunnable):
len(self.data11), len(self.data21)) len(self.data11), len(self.data21))
self.app.saveData(self.data11, self.data21) self.app.saveData(self.data11, self.data21)
logger.debug('Sending "updated" signal') logger.debug('Sending "updated" signal')
if self.app.sweep.properties.mode == SweepMode.CONTINOUS: self.signals.updated.emit()
def updateDataContinuouse(self, frequencies, values11, values21, index):
# Update the data from (i*101) to (i+1)*101
logger.debug(
"Calculating data and inserting in existing data at index %d",
index)
offset = self.sweep.points * index
raw_data11 = [Datapoint(freq, values11[i][0], values11[i][1])
for i, freq in enumerate(frequencies)]
raw_data21 = [Datapoint(freq, values21[i][0], values21[i][1])
for i, freq in enumerate(frequencies)]
data11, data21 = self.applyCalibration(raw_data11, raw_data21)
logger.debug("update Freqs: %s, Offset: %s", len(frequencies), offset)
for i in range(len(frequencies)):
self.data11[offset + i] = data11[i]
self.data21[offset + i] = data21[i]
self.rawData11[offset + i] = raw_data11[i]
self.rawData21[offset + i] = raw_data21[i]
logger.debug("Saving data to application (%d and %d points)",
len(self.data11), len(self.data21))
self.app.saveData(self.data11, self.data21)
logger.debug('Sending "updated" signal')
if self.app.sweep.properties.mode == SweepMode.CONTINUOUS_FILE:
ts = Touchstone("s2p_continuous.s2p") ts = Touchstone("s2p_continuous.s2p")
ts.sdata[0] = self.data11 ts.sdata[0] = self.data11
nr_params = 4 nr_params = 4

Wyświetl plik

@ -683,7 +683,7 @@ class CalibrationWindow(QtWidgets.QWidget):
self.btn_automatic.setDisabled(False) self.btn_automatic.setDisabled(False)
return return
if self.app.sweep.properties.mode == SweepMode.CONTINOUS: if self.app.sweep.properties.mode == SweepMode.CONTINUOUS:
QtWidgets.QMessageBox( QtWidgets.QMessageBox(
QtWidgets.QMessageBox.Information, QtWidgets.QMessageBox.Information,
"Continuous sweep enabled", "Continuous sweep enabled",

Wyświetl plik

@ -77,12 +77,12 @@ class SweepSettingsWindow(QtWidgets.QWidget):
lambda: self.update_mode(SweepMode.SINGLE)) lambda: self.update_mode(SweepMode.SINGLE))
sweep_btn_layout.addWidget(radio_button) sweep_btn_layout.addWidget(radio_button)
radio_button = QtWidgets.QRadioButton("Continous sweep") radio_button = QtWidgets.QRadioButton("Continuous sweep")
radio_button.setMinimumHeight(20) radio_button.setMinimumHeight(20)
radio_button.setChecked( radio_button.setChecked(
self.app.sweep.properties.mode == SweepMode.CONTINOUS) self.app.sweep.properties.mode == SweepMode.CONTINUOUS)
radio_button.clicked.connect( radio_button.clicked.connect(
lambda: self.update_mode(SweepMode.CONTINOUS)) lambda: self.update_mode(SweepMode.CONTINUOUS))
sweep_btn_layout.addWidget(radio_button) sweep_btn_layout.addWidget(radio_button)
radio_button = QtWidgets.QRadioButton("Averaged sweep") radio_button = QtWidgets.QRadioButton("Averaged sweep")
@ -93,6 +93,15 @@ class SweepSettingsWindow(QtWidgets.QWidget):
lambda: self.update_mode(SweepMode.AVERAGE)) lambda: self.update_mode(SweepMode.AVERAGE))
sweep_btn_layout.addWidget(radio_button) sweep_btn_layout.addWidget(radio_button)
radio_button = QtWidgets.QRadioButton("Continuous sweep infile")
radio_button.setMinimumHeight(20)
radio_button.setChecked(
self.app.sweep.properties.mode == SweepMode.CONTINUOUS_FILE)
radio_button.clicked.connect(
lambda: self.update_mode(SweepMode.CONTINUOUS_FILE))
sweep_btn_layout.addWidget(radio_button)
layout.addRow(sweep_btn_layout) layout.addRow(sweep_btn_layout)
# Log sweep # Log sweep