Newer
Older
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QTextEdit
from PyQt5 import uic, QtCore, QtGui, QtWidgets
import sys
def __init__(self, qt_app, *args, **kwargs):
super().__init__(*args, **kwargs)
uic.loadUi('climate-lab-main.ui', self)
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())
self.start_dir = os.getcwd()
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 check_and_change_dir(self, data_folder):
if os.path.exists(data_folder):
if os.path.isdir(data_folder):
button_reply = QtWidgets.QMessageBox.question(self, 'Warning: \''+data_folder+'\' already exists',
'Overwrite data in \''+data_folder+'\'?',
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if not button_reply == QtWidgets.QMessageBox.Yes:
return False
else:
QtWidgets.QMessageBox.critical(self, 'Error', '\''+data_folder + '\' exists but is not a directory!')
return False
else:
try:
os.makedirs(data_folder)
except:
QtWidgets.QMessageBox.critical(self, 'Error', 'Cannot create folder \''+data_folder + '\'!')
return False
os.chdir(data_folder)
print('changed dir')
return True
self.qt_app.processEvents();
os.chdir(self.start_dir)
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()
if not self.check_and_change_dir(config_data['data_folder']+'/'+output_basename):
self.setEnabled(True)
return
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_()