Skip to content
Snippets Groups Projects
climate-lab-gui.py 1.79 KiB
Newer Older
Martin Killenberg's avatar
Martin Killenberg committed
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QTextEdit
from PyQt5 import uic, QtCore, QtGui, QtWidgets
import sys
import prototype
import json
Martin Killenberg's avatar
Martin Killenberg committed

class TestStandMainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        uic.loadUi('climate-lab-main.ui', self)

        self.startButton.clicked.connect(lambda: self.doMeasurement())

    def doMeasurement(self):
        self.setEnabled(False)
        with open('test_stand_parameter.json', 'r') as f:
            config_data = json.load(f)

        output_basename = self.baseName.text()
        meas = prototype.Measurements(config_data['chamber_ip'], config_data['vna_ip'], output_basename,
                                      False, config_data)
        try:
            temperatures = meas.perform_temperature_sweep(self.startParameter.value(), self.stopParameter.value(),
                                                          self.stepParameter.value(),
                                                          self.fixedParameter.value(), self.soakingTime.value(),
                                                          self.stableReads.value())
            temp_extensions = []
            for t in temperatures:
                temp_extensions.append(str(t)+'deg_'+str(self.fixedParameter.value())+'rh')
            prototype.plot_output(output_basename, temp_extensions, True, output_basename +
                                  ': Temperature sweep ' + str(temperatures[0]) + ' degC to ' +
                                  str(temperatures[-1]) + ' degC')
        finally:
            meas.chamber.close()
            self.setEnabled(True)

Martin Killenberg's avatar
Martin Killenberg committed

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = TestStandMainWindow()
    mainWindow.show()
    app.exec_()