#!/usr/bin/python3 from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QTextEdit from PyQt5 import uic, QtCore, QtGui, QtWidgets import sys import prototype import json import time import analysis class TestStandMainWindow(QMainWindow): def __init__(self, qt_app, *args, **kwargs): super().__init__(*args, **kwargs) uic.loadUi('climate-lab-main.ui', self) self.qt_app = qt_app self.startButton.clicked.connect(lambda: self.do_measurement()) self.tempSweepButton.clicked.connect(lambda: self.set_temp_sweep_labels()) self.humSweepButton.clicked.connect(lambda: self.set_hum_sweep_labels()) def set_temp_sweep_labels(self): self.parametersGroupBox.setEnabled(True) self.startStopStepGroupBox.setTitle('Temperature [degC]') self.fixedParameterLabel.setText('Humidity [% r.h.]') def set_hum_sweep_labels(self): self.parametersGroupBox.setEnabled(True) self.startStopStepGroupBox.setTitle('Humidity [% r.h.]') self.fixedParameterLabel.setText('Temperature [degC]') def do_measurement(self): self.setEnabled(False) self.qt_app.processEvents(); with open('test_stand_parameter.json', 'r') as f: config_data = json.load(f) if self.autoNameCheckbox.isChecked(): output_basename = time.strftime("%Y_%m_%d-%H_%M_%S") + "_results" else: output_basename = self.baseName.text() meas = prototype.Measurements(config_data['chamber_ip'], config_data['vna_ip'], output_basename, False, config_data) try: if self.tempSweepButton.isChecked(): temperatures = meas.perform_sweep(self.startParameter.value(), self.stopParameter.value(), self.stepParameter.value(), self.fixedParameter.value(), self.soakingTime.value(), self.stableReads.value(), 'temperature') temp_extensions = [] for t in temperatures: temp_extensions.append(str(t)+'deg_'+str(self.fixedParameter.value())+'rh') analysis.plot_sweep(temperatures, [self.fixedParameter.value()]*len(temperatures), output_basename, 'temperature') prototype.plot_output(output_basename, temp_extensions, True, output_basename + ': Temperature sweep ' + str(temperatures[0]) + '--' + str(temperatures[-1]) + ' degC @ '+ str(self.fixedParameter.value()) + ' % r.h.') elif self.humSweepButton.isChecked(): humidities = meas.perform_sweep(self.startParameter.value(), self.stopParameter.value(), self.stepParameter.value(), self.fixedParameter.value(), self.soakingTime.value(), self.stableReads.value(), 'humidity') hum_extensions = [] for h in humidities: hum_extensions.append(str(self.fixedParameter.value())+'deg_'+str(h)+'rh') analysis.plot_sweep([self.fixedParameter.value()]*len(humidities), humidities, output_basename, 'humidity') prototype.plot_output(output_basename, hum_extensions, True, output_basename + ': Humidity sweep ' + str(humidities[0]) + '--' + str(humidities[-1]) + ' % r.h. @ '+ str(self.fixedParameter.value()) + ' degC') elif self.measurementFileButton.isChecked(): try: n_measurements = meas.perform_measurements(self.measurementFile.text()) prototype.plot_output(output_basename, range(n_measurements), True, output_basename) except FileNotFoundError as e: QtWidgets.QMessageBox.warning(self, 'Warning', str(e)) finally: meas.chamber.close() self.setEnabled(True) if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = TestStandMainWindow(app) mainWindow.show() app.exec_()