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

View file

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

View file

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

View file

@ -98,7 +98,7 @@
</size> </size>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>2</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="Startup"> <widget class="QWidget" name="Startup">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
@ -112,8 +112,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>522</width> <width>683</width>
<height>945</height> <height>902</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_13"> <layout class="QVBoxLayout" name="verticalLayout_13">
@ -713,8 +713,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>564</width> <width>697</width>
<height>477</height> <height>564</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_21"> <layout class="QVBoxLayout" name="verticalLayout_21">
@ -741,6 +741,22 @@
</property> </property>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </item>
@ -955,7 +971,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>683</width> <width>683</width>
<height>1217</height> <height>1182</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_22"> <layout class="QVBoxLayout" name="verticalLayout_22">
@ -1520,8 +1536,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>602</width> <width>486</width>
<height>628</height> <height>608</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_7"> <layout class="QVBoxLayout" name="verticalLayout_7">
@ -1880,8 +1896,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>168</width> <width>144</width>
<height>127</height> <height>124</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_12"> <layout class="QHBoxLayout" name="horizontalLayout_12">
@ -2163,8 +2179,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>258</width> <width>697</width>
<height>241</height> <height>564</height>
</rect> </rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_19"> <layout class="QHBoxLayout" name="horizontalLayout_19">