diff --git a/Software/PC_Application/LibreVNA-GUI/Calibration/calibration.cpp b/Software/PC_Application/LibreVNA-GUI/Calibration/calibration.cpp index c5c64a4..01aa638 100644 --- a/Software/PC_Application/LibreVNA-GUI/Calibration/calibration.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Calibration/calibration.cpp @@ -603,6 +603,11 @@ void Calibration::edit() std::set m; auto selected = ui->table->selectionModel()->selectedRows(); for(auto s : selected) { + auto meas = measurements[s.row()]; + if(!meas->readyForMeasurement()) { + InformationBox::ShowError("Unable to measure", CalibrationMeasurement::Base::TypeToString(meas->getType())+" measurement is not ready, please check that a valid calibration standard is selected"); + return; + } m.insert(measurements[s.row()]); } if(!CalibrationMeasurement::Base::canMeasureSimultaneously(m)) { @@ -1659,7 +1664,7 @@ bool Calibration::canCompute(Calibration::CalType type, double *startFreq, doubl // missing measurement return false; } else if (!meas->readyForCalculation()){ - // measurement not ready (either not calkit standard definded or no measurements + // measurement not ready (either not calkit standard definded or no measurements) return false; } else { foundMeasurements.push_back(meas); diff --git a/Software/PC_Application/LibreVNA-GUI/Calibration/calibrationmeasurement.h b/Software/PC_Application/LibreVNA-GUI/Calibration/calibrationmeasurement.h index e6b58f2..7050bf4 100644 --- a/Software/PC_Application/LibreVNA-GUI/Calibration/calibrationmeasurement.h +++ b/Software/PC_Application/LibreVNA-GUI/Calibration/calibrationmeasurement.h @@ -38,6 +38,7 @@ public: virtual double minFreq() = 0; virtual double maxFreq() = 0; virtual unsigned int numPoints() = 0; + virtual bool readyForMeasurement() {return false;} virtual bool readyForCalculation() {return false;} static std::vector availableTypes(); @@ -80,6 +81,7 @@ public: virtual double minFreq() override; virtual double maxFreq() override; virtual unsigned int numPoints() override {return points.size();} + virtual bool readyForMeasurement() override {return standard != nullptr;} virtual bool readyForCalculation() override {return standard && points.size() > 0;} virtual void clearPoints() override; @@ -194,6 +196,7 @@ public: virtual double minFreq() override; virtual double maxFreq() override; virtual unsigned int numPoints() override {return points.size();} + virtual bool readyForMeasurement() override {return standard != nullptr;} virtual bool readyForCalculation() override {return standard && points.size() > 0;} virtual void clearPoints() override; @@ -265,6 +268,7 @@ public: virtual double minFreq() override; virtual double maxFreq() override; virtual unsigned int numPoints() override; + virtual bool readyForMeasurement() override {return true;} virtual bool readyForCalculation() override {return points.size() > 0;} virtual void clearPoints() override; diff --git a/Software/PC_Application/LibreVNA-GUI/Calibration/calstandard.cpp b/Software/PC_Application/LibreVNA-GUI/Calibration/calstandard.cpp index 0c84a11..ea0f26c 100644 --- a/Software/PC_Application/LibreVNA-GUI/Calibration/calstandard.cpp +++ b/Software/PC_Application/LibreVNA-GUI/Calibration/calstandard.cpp @@ -120,7 +120,7 @@ void OnePort::clearMeasurement() delete touchstone; touchstone = nullptr; minFreq = std::numeric_limits::lowest(); - minFreq = std::numeric_limits::max(); + maxFreq = std::numeric_limits::max(); } nlohmann::json OnePort::toJSON() @@ -538,7 +538,7 @@ void TwoPort::clearMeasurement() delete touchstone; touchstone = nullptr; minFreq = std::numeric_limits::lowest(); - minFreq = std::numeric_limits::max(); + maxFreq = std::numeric_limits::max(); } nlohmann::json TwoPort::toJSON()