From 9ca9ab098c890dd2da324d903fe42537a59614fc Mon Sep 17 00:00:00 2001
From: Martin Killenberg <martin.killenberg@desy.de>
Date: Wed, 18 Jan 2023 18:10:19 +0100
Subject: [PATCH] implement measurement file and auto name in GUI

---
 Python_script/climate-lab-gui.py  | 53 ++++++++++++++++++++++---------
 Python_script/climate-lab-main.ui |  8 ++---
 2 files changed, 42 insertions(+), 19 deletions(-)
 mode change 100644 => 100755 Python_script/climate-lab-gui.py

diff --git a/Python_script/climate-lab-gui.py b/Python_script/climate-lab-gui.py
old mode 100644
new mode 100755
index dc6ad32..9ac69e3
--- a/Python_script/climate-lab-gui.py
+++ b/Python_script/climate-lab-gui.py
@@ -1,35 +1,57 @@
+#!/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
 
 class TestStandMainWindow(QMainWindow):
-    def __init__(self, *args, **kwargs):
+    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.doMeasurement())
+        self.startButton.clicked.connect(lambda: self.do_measurement())
+
+    def do_measurement(self):
+        if self.humSweepButton.isChecked():
+            QtWidgets.QMessageBox.information(self, 'Information', 'Humidity sweep is not implemented yet!')
+            return
 
-    def doMeasurement(self):
         self.setEnabled(False)
+        self.qt_app.processEvents();
+
         with open('test_stand_parameter.json', 'r') as f:
             config_data = json.load(f)
 
-        output_basename = self.baseName.text()
+        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:
-            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')
+            if self.tempSweepButton.isChecked():
+                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]) + '--' +
+                                      str(temperatures[-1]) + ' degC @ '+ str(self.fixedParameter.value()) + ' % r.h.')
+
+            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)
@@ -37,6 +59,7 @@ class TestStandMainWindow(QMainWindow):
 
 if __name__ == '__main__':
     app = QApplication(sys.argv)
-    mainWindow = TestStandMainWindow()
+    mainWindow = TestStandMainWindow(app)
     mainWindow.show()
     app.exec_()
+
diff --git a/Python_script/climate-lab-main.ui b/Python_script/climate-lab-main.ui
index e23d165..b29d54f 100644
--- a/Python_script/climate-lab-main.ui
+++ b/Python_script/climate-lab-main.ui
@@ -49,7 +49,7 @@
         </widget>
        </item>
        <item row="2" column="1">
-        <widget class="QLineEdit" name="measuementFile">
+        <widget class="QLineEdit" name="measurementFile">
          <property name="enabled">
           <bool>false</bool>
          </property>
@@ -90,7 +90,7 @@
     <item row="2" column="0">
      <widget class="QGroupBox" name="parametersGroupBox">
       <property name="title">
-       <string>Parameters</string>
+       <string>Sweep parameters</string>
       </property>
       <layout class="QGridLayout" name="gridLayout_2">
        <item row="0" column="0">
@@ -136,7 +136,7 @@
              <number>1</number>
             </property>
             <property name="value">
-             <double>32.000000000000000</double>
+             <double>22.000000000000000</double>
             </property>
            </widget>
           </item>
@@ -360,7 +360,7 @@
   <connection>
    <sender>measurementFileButton</sender>
    <signal>toggled(bool)</signal>
-   <receiver>measuementFile</receiver>
+   <receiver>measurementFile</receiver>
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-- 
GitLab