option to prevent electronic calibrations while LibreCAL temperature unstable

This commit is contained in:
Jan Käberich 2025-06-24 08:50:43 +02:00
parent 3330cee2ba
commit b3eb1735cc
4 changed files with 47 additions and 12 deletions

View file

@ -4,6 +4,7 @@
#include "caldevice.h"
#include "usbdevice.h"
#include "CustomWidgets/informationbox.h"
#include "preferences.h"
#include <set>
@ -234,6 +235,14 @@ void LibreCALDialog::updateCalibrationStartStatus()
canStart = validatePortSelection(true);
}
if(canStart) {
if(!Preferences::getInstance().Acquisition.allowUseOfUnstableLibreCALTemp && !device->stabilized()) {
canStart = false;
ui->lCalibrationStatus->setText("LibreCAL temperature unstable");
ui->lCalibrationStatus->setStyleSheet("QLabel { color : red; }");
}
}
ui->start->setEnabled(canStart);
if(canStart) {
ui->lCalibrationStatus->setText("Ready to start");
@ -259,6 +268,7 @@ void LibreCALDialog::updateDeviceStatus()
ui->lDeviceStatus->setText("Heating up, please wait with calibration");
ui->lDeviceStatus->setStyleSheet("QLabel { color : orange; }");
}
updateCalibrationStartStatus();
}
void LibreCALDialog::determineAutoPorts()
@ -420,6 +430,7 @@ void LibreCALDialog::stopSweep()
void LibreCALDialog::startCalibration()
{
disableUI();
busy = true;
ui->progressCal->setValue(0);
ui->lCalibrationStatus->setText("Creating calibration kit from coefficients...");
@ -592,6 +603,7 @@ void LibreCALDialog::startCalibration()
disconnect(cal, &Calibration::measurementsUpdated, this, nullptr);
setTerminationOnAllUsedPorts(CalDevice::Standard(CalDevice::Standard::Type::None));
enableUI();
busy = false;
break;
}
setTerminationOnAllUsedPorts(CalDevice::Standard(CalDevice::Standard::Type::None));
@ -609,6 +621,7 @@ void LibreCALDialog::startCalibration()
connect(cal, &Calibration::measurementsAborted, this, [=](){
setTerminationOnAllUsedPorts(CalDevice::Standard(CalDevice::Standard::Type::None));
enableUI();
busy = false;
ui->lCalibrationStatus->setText("Ready to start");
});

View file

@ -276,6 +276,7 @@ void PreferencesDialog::setInitialGUIState()
ui->AcquisitionAlwaysExciteBoth->setChecked(p->Acquisition.alwaysExciteAllPorts);
ui->AcquisitionAllowSegmentedSweep->setChecked(p->Acquisition.allowSegmentedSweep);
ui->AcquisitionAllowCalStartWithUnstableLibreCALTemperature->setChecked(p->Acquisition.allowUseOfUnstableLibreCALTemp);
ui->AcquisitionAveragingMode->setCurrentIndex(p->Acquisition.useMedianAveraging ? 1 : 0);
ui->AcquisitionFullSpanBehavior->setCurrentIndex(p->Acquisition.fullSpanManual ? 1 : 0);
ui->AcquisitionFullSpanStart->setValue(p->Acquisition.fullSpanStart);
@ -398,6 +399,7 @@ void PreferencesDialog::updateFromGUI()
p->Acquisition.alwaysExciteAllPorts = ui->AcquisitionAlwaysExciteBoth->isChecked();
p->Acquisition.allowSegmentedSweep = ui->AcquisitionAllowSegmentedSweep->isChecked();
p->Acquisition.allowUseOfUnstableLibreCALTemp = ui->AcquisitionAllowCalStartWithUnstableLibreCALTemperature->isChecked();
p->Acquisition.useMedianAveraging = ui->AcquisitionAveragingMode->currentIndex() == 1;
p->Acquisition.fullSpanManual = ui->AcquisitionFullSpanBehavior->currentIndex() == 1;
p->Acquisition.fullSpanStart = ui->AcquisitionFullSpanStart->value();

View file

@ -103,8 +103,11 @@ public:
} SA;
} Startup;
struct {
// VNA settings
bool alwaysExciteAllPorts;
bool allowSegmentedSweep;
bool allowUseOfUnstableLibreCALTemp;
bool useMedianAveraging;
// Full span settings
@ -277,6 +280,7 @@ private:
{&Startup.SA.averaging, "Startup.SA.averaging", 1},
{&Acquisition.alwaysExciteAllPorts, "Acquisition.alwaysExciteBothPorts", true},
{&Acquisition.allowSegmentedSweep, "Acquisition.allowSegmentedSweep", true},
{&Acquisition.allowUseOfUnstableLibreCALTemp, "Acquisition.allowUseOfUnstableLibreCALTemp", true},
{&Acquisition.useMedianAveraging, "Acquisition.useMedianAveraging", false},
{&Acquisition.fullSpanManual, "Acquisition.fullSpanManual", false},
{&Acquisition.fullSpanStart, "Acquisition.fullSpanStart", 0.0},

View file

@ -98,7 +98,7 @@
</size>
</property>
<property name="currentIndex">
<number>2</number>
<number>1</number>
</property>
<widget class="QWidget" name="Startup">
<layout class="QHBoxLayout" name="horizontalLayout_4">
@ -112,8 +112,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>522</width>
<height>945</height>
<width>683</width>
<height>902</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_13">
@ -713,8 +713,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>564</width>
<height>477</height>
<width>697</width>
<height>564</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_21">
@ -741,6 +741,22 @@
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_17">
<property name="title">
<string>Electronic Calibration</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_25">
<item>
<widget class="QCheckBox" name="AcquisitionAllowCalStartWithUnstableLibreCALTemperature">
<property name="text">
<string>Allow calibration to start before the LibreCAL temperature has stabilized</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
@ -955,7 +971,7 @@
<x>0</x>
<y>0</y>
<width>683</width>
<height>1217</height>
<height>1182</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_22">
@ -1520,8 +1536,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>602</width>
<height>628</height>
<width>486</width>
<height>608</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_7">
@ -1880,8 +1896,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>168</width>
<height>127</height>
<width>144</width>
<height>124</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_12">
@ -2163,8 +2179,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>258</width>
<height>241</height>
<width>697</width>
<height>564</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_19">