diff --git a/Python_script/climate-lab-gui.py b/Python_script/climate-lab-gui.py index 2d63f4ff2a03b7824814ec99f6bac448caeca90a..2ec5fc11beb02c026e0859e065bc5d7bfa8841ec 100755 --- a/Python_script/climate-lab-gui.py +++ b/Python_script/climate-lab-gui.py @@ -8,6 +8,8 @@ import prototype import json import time import analysis +import process_sync +import multiprocessing as mp class TestStandMainWindow(QMainWindow): @@ -17,6 +19,7 @@ class TestStandMainWindow(QMainWindow): self.qt_app = qt_app self.startButton.clicked.connect(lambda: self.do_measurement()) + self.stopButton.clicked.connect(lambda: self.stop_measurement()) self.tempSweepButton.clicked.connect(lambda: self.set_temp_sweep_labels()) self.humSweepButton.clicked.connect(lambda: self.set_hum_sweep_labels()) @@ -70,8 +73,13 @@ class TestStandMainWindow(QMainWindow): return analysis_config + def stop_measurement(self): + process_sync.stop_measurement.set() + def do_measurement(self): - self.setEnabled(False) + self.runSettingsLayout.setEnabled(False) + self.startButton.setEnabled(False) + self.stopButton.setEnabled(True) self.qt_app.processEvents(); os.chdir(self.start_dir) @@ -94,6 +102,7 @@ class TestStandMainWindow(QMainWindow): meas = None try: meas = prototype.Measurements(config_data, output_basename,False, ext_sensor_channels) + q = mp.Queue() if self.tempSweepButton.isChecked(): temperatures = meas.perform_sweep(self.startParameter.value(), self.stopParameter.value(), self.stepParameter.value(), self.fixedParameter.value(), @@ -148,7 +157,9 @@ class TestStandMainWindow(QMainWindow): meas.chamber.close() meas.ext_sensors.close() - self.setEnabled(True) + self.runSettingsLayout.setEnabled(True) + self.startButton.setEnabled(True) + self.stopButton.setEnabled(False) if __name__ == '__main__': diff --git a/Python_script/climate-lab-main.ui b/Python_script/climate-lab-main.ui index 9f90c667e844b1814fe3f085f162332c05347749..aab4951c9e7fcf7ede740d6fe943e391f389898c 100644 --- a/Python_script/climate-lab-main.ui +++ b/Python_script/climate-lab-main.ui @@ -16,393 +16,248 @@ <widget class="QWidget" name="centralwidget"> <layout class="QVBoxLayout" name="verticalLayout_8"> <item> - <widget class="QFrame" name="measurementTypeFrame"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0"> - <widget class="QRadioButton" name="tempSweepButton"> - <property name="text"> - <string>Temperature sweep</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QRadioButton" name="humSweepButton"> - <property name="text"> - <string>Humidity sweep</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QRadioButton" name="measurementFileButton"> - <property name="text"> - <string>Measurements file</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="measurementFile"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>measurements.txt</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QGroupBox" name="parametersGroupBox"> - <property name="title"> - <string>Sweep parameters</string> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QGroupBox" name="startStopStepGroupBox"> - <property name="title"> - <string>Temperature [degC]</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="startLabel"> - <property name="text"> - <string>Start</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="stopLabel"> - <property name="text"> - <string>Stop</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QLabel" name="stepLabel"> - <property name="text"> - <string>Step</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QDoubleSpinBox" name="startParameter"> - <property name="decimals"> - <number>1</number> - </property> - <property name="value"> - <double>23.000000000000000</double> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QDoubleSpinBox" name="stopParameter"> - <property name="decimals"> - <number>1</number> - </property> - <property name="value"> - <double>23.000000000000000</double> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QDoubleSpinBox" name="stepParameter"> - <property name="decimals"> - <number>1</number> - </property> - <property name="minimum"> - <double>0.100000000000000</double> - </property> - <property name="value"> - <double>1.000000000000000</double> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="0" column="1"> - <widget class="QFrame" name="fixedParameterFrame"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QLabel" name="fixedParameterLabel"> - <property name="text"> - <string>Humidity [% r.h.]</string> - </property> - </widget> - </item> - <item> - <widget class="QDoubleSpinBox" name="fixedParameter"> - <property name="decimals"> - <number>1</number> - </property> - <property name="value"> - <double>55.000000000000000</double> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="0"> - <widget class="QFrame" name="soakingTimeFrame"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QLabel" name="soakingTimeLabel"> - <property name="text"> - <string>Soaking time [s]</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="soakingTime"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>1000000</number> - </property> - <property name="singleStep"> - <number>10</number> - </property> - <property name="value"> - <number>1000</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="1"> - <widget class="QFrame" name="stableReadsFrame"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QLabel" name="stableReadsLabel"> - <property name="text"> - <string>Number of stable reads</string> - </property> - </widget> - </item> - <item> - <widget class="QSpinBox" name="stableReads"> - <property name="minimum"> - <number>1</number> - </property> - <property name="value"> - <number>10</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer_3"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QGroupBox" name="nameGroupBox"> - <property name="title"> - <string>Run Name</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QLineEdit" name="baseName"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>myTestMeasurement</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="autoNameCheckbox"> - <property name="text"> - <string>Auto (Date/Time)</string> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="analysisGroupBox"> - <property name="title"> - <string>Analysis</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <item> - <layout class="QHBoxLayout" name="dutNameLayout"> - <item> - <widget class="QLabel" name="dutNameLabel"> + <layout class="QVBoxLayout" name="runSettingsLayout"> + <item> + <widget class="QFrame" name="measurementTypeFrame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="2" column="0"> + <widget class="QRadioButton" name="measurementFileButton"> <property name="text"> - <string>DUT name</string> + <string>Measurements file</string> </property> </widget> </item> - <item> - <widget class="QLineEdit" name="dutName"/> + <item row="0" column="0"> + <widget class="QRadioButton" name="tempSweepButton"> + <property name="text"> + <string>Temperature sweep</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="measurementFile"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>measurements.txt</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QRadioButton" name="humSweepButton"> + <property name="text"> + <string>Humidity sweep</string> + </property> + </widget> </item> </layout> - </item> - <item> - <layout class="QHBoxLayout" name="analysisMiddleLayout"> - <item> - <widget class="QGroupBox" name="analysisTypeGroupBox"> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QGroupBox" name="parametersGroupBox"> + <property name="title"> + <string>Sweep parameters</string> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QGroupBox" name="startStopStepGroupBox"> <property name="title"> - <string>Analysis type</string> + <string>Temperature [degC]</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="QRadioButton" name="analysisTypeDefaultButton"> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="startLabel"> + <property name="text"> + <string>Start</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLabel" name="stopLabel"> + <property name="text"> + <string>Stop</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QLabel" name="stepLabel"> <property name="text"> - <string>Default</string> + <string>Step</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QDoubleSpinBox" name="startParameter"> + <property name="decimals"> + <number>1</number> + </property> + <property name="value"> + <double>23.000000000000000</double> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QDoubleSpinBox" name="stopParameter"> + <property name="decimals"> + <number>1</number> + </property> + <property name="value"> + <double>23.000000000000000</double> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QDoubleSpinBox" name="stepParameter"> + <property name="decimals"> + <number>1</number> + </property> + <property name="minimum"> + <double>0.100000000000000</double> + </property> + <property name="value"> + <double>1.000000000000000</double> </property> </widget> </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QFrame" name="fixedParameterFrame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="Line" name="line"> + <spacer name="verticalSpacer"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Vertical</enum> </property> - </widget> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> </item> <item> - <widget class="QRadioButton" name="analysisTypeCableButton"> + <widget class="QLabel" name="fixedParameterLabel"> <property name="text"> - <string>RF Cable</string> - </property> - <property name="checked"> - <bool>true</bool> + <string>Humidity [% r.h.]</string> </property> </widget> </item> <item> - <layout class="QHBoxLayout" name="cableLengthLayout"> - <item> - <widget class="QLabel" name="cableLengthLabel"> - <property name="text"> - <string>Length [m]</string> - </property> - </widget> - </item> - <item> - <widget class="QDoubleSpinBox" name="cableLengthSpinBox"> - <property name="value"> - <double>10.000000000000000</double> - </property> - </widget> - </item> - </layout> + <widget class="QDoubleSpinBox" name="fixedParameter"> + <property name="decimals"> + <number>1</number> + </property> + <property name="value"> + <double>55.000000000000000</double> + </property> + </widget> </item> </layout> </widget> </item> - <item> - <widget class="QGroupBox" name="removeOffsetsGroupBox"> - <property name="enabled"> - <bool>false</bool> + <item row="1" column="0"> + <widget class="QFrame" name="soakingTimeFrame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> </property> - <property name="title"> - <string>Remove offsets</string> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <item> - <widget class="QCheckBox" name="removeOffsetsSignal1"> + <widget class="QLabel" name="soakingTimeLabel"> <property name="text"> - <string>Signal 1</string> + <string>Soaking time [s]</string> </property> - <property name="checked"> - <bool>true</bool> + </widget> + </item> + <item> + <widget class="QSpinBox" name="soakingTime"> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>1000000</number> + </property> + <property name="singleStep"> + <number>10</number> + </property> + <property name="value"> + <number>1000</number> </property> </widget> </item> + </layout> + </widget> + </item> + <item row="1" column="1"> + <widget class="QFrame" name="stableReadsFrame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <widget class="QCheckBox" name="removeOffsetsSignal2"> + <widget class="QLabel" name="stableReadsLabel"> <property name="text"> - <string>Signal 2</string> + <string>Number of stable reads</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="stableReads"> + <property name="minimum"> + <number>1</number> + </property> + <property name="value"> + <number>10</number> </property> </widget> </item> @@ -410,9 +265,158 @@ </widget> </item> </layout> - </item> - </layout> - </widget> + </widget> + </item> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QGroupBox" name="nameGroupBox"> + <property name="title"> + <string>Run Name</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLineEdit" name="baseName"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>myTestMeasurement</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="autoNameCheckbox"> + <property name="text"> + <string>Auto (Date/Time)</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="analysisGroupBox"> + <property name="title"> + <string>Analysis</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <layout class="QHBoxLayout" name="dutNameLayout"> + <item> + <widget class="QLabel" name="dutNameLabel"> + <property name="text"> + <string>DUT name</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="dutName"/> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="analysisMiddleLayout"> + <item> + <widget class="QGroupBox" name="analysisTypeGroupBox"> + <property name="title"> + <string>Analysis type</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QRadioButton" name="analysisTypeDefaultButton"> + <property name="text"> + <string>Default</string> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="analysisTypeCableButton"> + <property name="text"> + <string>RF Cable</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="cableLengthLayout"> + <item> + <widget class="QLabel" name="cableLengthLabel"> + <property name="text"> + <string>Length [m]</string> + </property> + </widget> + </item> + <item> + <widget class="QDoubleSpinBox" name="cableLengthSpinBox"> + <property name="value"> + <double>10.000000000000000</double> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="removeOffsetsGroupBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="title"> + <string>Remove offsets</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QCheckBox" name="removeOffsetsSignal1"> + <property name="text"> + <string>Signal 1</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="removeOffsetsSignal2"> + <property name="text"> + <string>Signal 2</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + </layout> </item> <item> <layout class="QHBoxLayout" name="startButtonLayout"> @@ -449,6 +453,29 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="stopButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Stop</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> </layout> </item> </layout> @@ -458,7 +485,7 @@ <rect> <x>0</x> <y>0</y> - <width>536</width> + <width>502</width> <height>30</height> </rect> </property>