From e4106fe3a22aa0667c4454699304517e2db16622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Tue, 12 Oct 2021 20:52:11 +0200 Subject: [PATCH 1/2] Improved error handling when opening files --- Software/PC_Application/Calibration/calkit.cpp | 6 +++++- Software/PC_Application/Calibration/calkitdialog.cpp | 8 +++++++- Software/PC_Application/appwindow.cpp | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Software/PC_Application/Calibration/calkit.cpp b/Software/PC_Application/Calibration/calkit.cpp index a180058..9180c4d 100644 --- a/Software/PC_Application/Calibration/calkit.cpp +++ b/Software/PC_Application/Calibration/calkit.cpp @@ -79,7 +79,11 @@ Calkit Calkit::fromFile(QString filename) } json j; - file >> j; + try { + file >> j; + } catch (exception &e) { + throw runtime_error("JSON parsing error: " + string(e.what())); + } if(j.contains("SOLT")) { qDebug() << "JSON format detected"; // calkit file uses json format, parse diff --git a/Software/PC_Application/Calibration/calkitdialog.cpp b/Software/PC_Application/Calibration/calkitdialog.cpp index 3298ce1..a4d975c 100644 --- a/Software/PC_Application/Calibration/calkitdialog.cpp +++ b/Software/PC_Application/Calibration/calkitdialog.cpp @@ -7,6 +7,7 @@ #include #include #include +#include using namespace std; @@ -119,7 +120,12 @@ CalkitDialog::CalkitDialog(Calkit &c, QWidget *parent) : connect(ui->buttonBox->button(QDialogButtonBox::Open), &QPushButton::clicked, [=](){ auto filename = QFileDialog::getOpenFileName(this, "Open calibration kit coefficients", "", "Calibration kit files (*.calkit)", nullptr, QFileDialog::DontUseNativeDialog); if(filename.length() > 0) { - ownKit = Calkit::fromFile(filename); + try { + ownKit = Calkit::fromFile(filename); + } catch (runtime_error e) { + QMessageBox::warning(nullptr, "Error", "The calibration kit file could not be parsed (" + QString(e.what()) + ")"); + qWarning() << "Parsing of calibration kit failed while opening calibration file: " << e.what(); + } updateEntries(); } }); diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp index 918093f..5f6e360 100644 --- a/Software/PC_Application/appwindow.cpp +++ b/Software/PC_Application/appwindow.cpp @@ -178,7 +178,12 @@ AppWindow::AppWindow(QWidget *parent) return; } nlohmann::json j; - file >> j; + try { + file >> j; + } catch (exception &e) { + QMessageBox::warning(nullptr, "Error", "Failed to parse the setup file (" + QString(e.what()) + ")"); + qWarning() << "Parsing of setup file failed: " << e.what(); + } file.close(); LoadSetup(j); }); From 09366d73ccf377c7197bd36d8cbae4385415d172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20K=C3=A4berich?= Date: Tue, 12 Oct 2021 21:58:44 +0200 Subject: [PATCH 2/2] SCPI commands for saving/loading calibration files --- Documentation/UserManual/ProgrammingGuide.pdf | Bin 248137 -> 249200 bytes Documentation/UserManual/ProgrammingGuide.tex | 12 +++++++ .../Calibration/amplitudecaldialog.cpp | 6 ++-- .../Calibration/calibration.cpp | 26 ++++++++++++--- .../PC_Application/Calibration/calkit.cpp | 7 ++-- .../Calibration/calkitdialog.cpp | 4 +-- .../CustomWidgets/informationbox.cpp | 21 ++++++++++++ .../CustomWidgets/informationbox.h | 3 ++ Software/PC_Application/Device/device.cpp | 10 +++--- .../Traces/Math/medianfilter.cpp | 4 +-- .../VNA/Deembedding/portextension.h | 4 +-- .../PC_Application/VNA/Deembedding/twothru.h | 1 - Software/PC_Application/VNA/vna.cpp | 31 +++++++++++++++++- Software/PC_Application/appwindow.cpp | 15 +++++---- Software/PC_Application/preferences.cpp | 2 +- 15 files changed, 110 insertions(+), 36 deletions(-) diff --git a/Documentation/UserManual/ProgrammingGuide.pdf b/Documentation/UserManual/ProgrammingGuide.pdf index 021a8133b2af6c5204f6b58c4122849c82513d95..c9ef6c069d4694c13e5725c1f5254eb2d8aa5d7b 100644 GIT binary patch delta 40987 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�X%Wms5YG8YWN9`;Ttwzh>fP(}eeDdpJGjdJVws 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 delta 39883 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

jM1eRv2sX6v&HN1?-hhn@ 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 z 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 amsSb+Crfn{pM_LZ6eL8#$*H0PA^8s@gK_f! diff --git a/Documentation/UserManual/ProgrammingGuide.tex b/Documentation/UserManual/ProgrammingGuide.tex index 4236ce5..09e5808 100644 --- a/Documentation/UserManual/ProgrammingGuide.tex +++ b/Documentation/UserManual/ProgrammingGuide.tex @@ -505,6 +505,18 @@ $$ S_{11}...S_{1n},S_{21}...S_{2n},...,S_{n1}...S_{nn} $$ \subsubsection{VNA:CALibration:BUSY} \query{Queries whether a calibration measurement is ongoing}{VNA:CALibration:BUSY?}{None}{TRUE or FALSE} +\subsubsection{VNA:CALibration:SAVE} +\event{Saves the active calibration to a file}{VNA:CALibration:SAVE}{} +Important points when saving/loading calibration files through SCPI commands: +\begin{itemize} +\item Filenames must be either absolute or relative to the location of the GUI application. +\item SCPI parsing implicitly capitalizes all commands, the file will be saved using only uppercase letters. Similarly, it is not possible to load a file whose filename contains lowercase characters. +\item If the LibreVNA-GUI (and thus also the SCPI server) is running on a different machine than the SCPI client, the calibration files will be saved/loaded from the machine that runs the GUI. +\end{itemize} + +\subsubsection{VNA:CALibration:LOAD} +\query{Loads a calibration file}{VNA:CALibration:LOAD?}{}{TRUE or FALSE} + \subsection{Signal Generator Commands} These commands change or query signal generator settings. Although most of them are available regardless of the current device mode, they usually only have an effect once the generator mode is active. diff --git a/Software/PC_Application/Calibration/amplitudecaldialog.cpp b/Software/PC_Application/Calibration/amplitudecaldialog.cpp index b8373a0..3dc8280 100644 --- a/Software/PC_Application/Calibration/amplitudecaldialog.cpp +++ b/Software/PC_Application/Calibration/amplitudecaldialog.cpp @@ -82,7 +82,7 @@ AmplitudeCalDialog::AmplitudeCalDialog(Device *dev, QWidget *parent) : file >> j; for(auto point : j) { if(!point.contains("Frequency") || !point.contains("Port1") || !point.contains("Port2")) { - QMessageBox::warning(this, "Error loading file", "Failed to parse calibration point"); + InformationBox::ShowError("Error loading file", "Failed to parse calibration point"); return; } CorrectionPoint p; @@ -425,9 +425,7 @@ void AmplitudeCalDialog::ReceivedMeasurement(Protocol::SpectrumAnalyzerResult re bool AmplitudeCalDialog::ConfirmActionIfEdited() { if(edited) { - auto reply = QMessageBox::question(this, "Confirm action", "Some points have been edited but not saved in the device yet. If you continue, all changes will be lost (unless they are already saved to a file). Do you want to continue?", - QMessageBox::Yes|QMessageBox::No); - return reply == QMessageBox::Yes; + return InformationBox::AskQuestion("Confirm action", "Some points have been edited but not saved in the device yet. If you continue, all changes will be lost (unless they are already saved to a file). Do you want to continue?", true); } else { // not edited yet, nothing to confirm return true; diff --git a/Software/PC_Application/Calibration/calibration.cpp b/Software/PC_Application/Calibration/calibration.cpp index a26405f..4579cec 100644 --- a/Software/PC_Application/Calibration/calibration.cpp +++ b/Software/PC_Application/Calibration/calibration.cpp @@ -6,6 +6,7 @@ #include "unit.h" #include #include "Tools/parameters.h" +#include "CustomWidgets/informationbox.h" using namespace std; @@ -127,7 +128,7 @@ bool Calibration::constructErrorTerms(Calibration::Type type) + "The measured calibration data covers " + Unit::ToString(minFreq, "Hz", " kMG", 4) + " to " + Unit::ToString(maxFreq, "Hz", " kMG", 4) + ", however the calibration kit is only valid from " + Unit::ToString(kit_minFreq, "Hz", " kMG", 4) + " to " + Unit::ToString(kit_maxFreq, "Hz", " kMG", 4) + ".\n\n" + "Please adjust the calibration kit or the span and take the calibration measurements again."; - QMessageBox::critical(nullptr, "Unable to perform calibration", msg); + InformationBox::ShowError("Unable to perform calibration", msg); qWarning() << msg; return false; } @@ -732,6 +733,13 @@ bool Calibration::openFromFile(QString filename) return false; } } + + // force correct file ending + if(filename.toLower().endsWith(".cal")) { + filename.chop(4); + filename += ".cal"; + } + qDebug() << "Attempting to open calibration from file" << filename; // reset all data before loading new calibration @@ -749,16 +757,24 @@ bool Calibration::openFromFile(QString filename) try { kit = Calkit::fromFile(calkit_file); } catch (runtime_error e) { - QMessageBox::warning(nullptr, "Missing calibration kit", "The calibration kit file associated with the selected calibration could not be parsed. The calibration might not be accurate. (" + QString(e.what()) + ")"); + InformationBox::ShowError("Missing calibration kit", "The calibration kit file associated with the selected calibration could not be parsed. The calibration might not be accurate. (" + QString(e.what()) + ")"); qWarning() << "Parsing of calibration kit failed while opening calibration file: " << e.what(); } ifstream file; + file.open(filename.toStdString()); + if(!file.good()) { + QString msg = "Unable to open file: "+filename; + InformationBox::ShowError("Error", msg); + qWarning() << msg; + return false; + } + try { file >> *this; - } catch(runtime_error e) { - QMessageBox::warning(nullptr, "File parsing error", e.what()); + } catch(exception e) { + InformationBox::ShowError("File parsing error", e.what()); qWarning() << "Calibration file parsing failed: " << e.what(); return false; } @@ -778,7 +794,7 @@ bool Calibration::saveToFile(QString filename) } } - if(filename.endsWith(".cal")) { + if(filename.toLower().endsWith(".cal")) { filename.chop(4); } auto calibration_file = filename + ".cal"; diff --git a/Software/PC_Application/Calibration/calkit.cpp b/Software/PC_Application/Calibration/calkit.cpp index 9180c4d..37ddb1d 100644 --- a/Software/PC_Application/Calibration/calkit.cpp +++ b/Software/PC_Application/Calibration/calkit.cpp @@ -7,6 +7,7 @@ #include "json.hpp" #include #include +#include "CustomWidgets/informationbox.h" using json = nlohmann::json; using namespace std; @@ -171,13 +172,9 @@ Calkit Calkit::fromFile(QString filename) c.TRL.Line.minFreq = readLine(file).toDouble(); c.TRL.Line.maxFreq = readLine(file).toDouble(); - auto msg = new QMessageBox(); - msg->setWindowTitle("Loading calkit file"); - msg->setText("The file \"" + filename + "\" is stored in a deprecated" + InformationBox::ShowMessage("Loading calkit file", "The file \"" + filename + "\" is stored in a deprecated" " calibration kit format. Future versions of this application might not support" " it anymore. Please save the calibration kit to update to the new format"); - msg->setStandardButtons(QMessageBox::Ok); - msg->show(); } file.close(); diff --git a/Software/PC_Application/Calibration/calkitdialog.cpp b/Software/PC_Application/Calibration/calkitdialog.cpp index a4d975c..924eca7 100644 --- a/Software/PC_Application/Calibration/calkitdialog.cpp +++ b/Software/PC_Application/Calibration/calkitdialog.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include "CustomWidgets/informationbox.h" using namespace std; @@ -123,7 +123,7 @@ CalkitDialog::CalkitDialog(Calkit &c, QWidget *parent) : try { ownKit = Calkit::fromFile(filename); } catch (runtime_error e) { - QMessageBox::warning(nullptr, "Error", "The calibration kit file could not be parsed (" + QString(e.what()) + ")"); + InformationBox::ShowError("Error", "The calibration kit file could not be parsed (" + QString(e.what()) + ")"); qWarning() << "Parsing of calibration kit failed while opening calibration file: " << e.what(); } updateEntries(); diff --git a/Software/PC_Application/CustomWidgets/informationbox.cpp b/Software/PC_Application/CustomWidgets/informationbox.cpp index 5357b29..223c22f 100644 --- a/Software/PC_Application/CustomWidgets/informationbox.cpp +++ b/Software/PC_Application/CustomWidgets/informationbox.cpp @@ -3,8 +3,15 @@ #include #include +bool InformationBox::has_gui = true; + void InformationBox::ShowMessage(QString title, QString message, QString messageID, bool block) { + if(!has_gui) { + // no gui option active, do not show any messages + return; + } + // check if the user still wants to see this message unsigned int hash; if(messageID.isEmpty()) { @@ -31,12 +38,21 @@ void InformationBox::ShowMessageBlocking(QString title, QString message, QString void InformationBox::ShowError(QString title, QString message) { + if(!has_gui) { + // no gui option active, do not show any messages + return; + } auto box = new InformationBox(title, message, QMessageBox::Information, 0, nullptr); box->show(); } bool InformationBox::AskQuestion(QString title, QString question, bool defaultAnswer, QString messageID) { + if(!has_gui) { + // no gui option active, do not show any messages + return defaultAnswer; + } + // check if the user still wants to see this message unsigned int hash; if(messageID.isEmpty()) { @@ -61,6 +77,11 @@ bool InformationBox::AskQuestion(QString title, QString question, bool defaultAn } } +void InformationBox::setGUI(bool enable) +{ + has_gui = enable; +} + InformationBox::InformationBox(QString title, QString message, Icon icon, unsigned int hash, QWidget *parent) : QMessageBox(parent), hash(hash) diff --git a/Software/PC_Application/CustomWidgets/informationbox.h b/Software/PC_Application/CustomWidgets/informationbox.h index d1e5494..f43b5ca 100644 --- a/Software/PC_Application/CustomWidgets/informationbox.h +++ b/Software/PC_Application/CustomWidgets/informationbox.h @@ -12,11 +12,14 @@ public: static void ShowError(QString title, QString message); // Display a dialog with yes/no buttons. Returns true if yes is clicked, false otherwise. If the user has selected to never see this message again, defaultAnswer is returned instead static bool AskQuestion(QString title, QString question, bool defaultAnswer, QString messageID = QString()); + + static void setGUI(bool enable); private: InformationBox(QString title, QString message, QMessageBox::Icon icon, unsigned int hash, QWidget *parent); ~InformationBox(); static QString hashToSettingsKey(unsigned int hash); unsigned int hash; + static bool has_gui; }; #endif // INFORMATIONBOX_H diff --git a/Software/PC_Application/Device/device.cpp b/Software/PC_Application/Device/device.cpp index f33e8e4..c0d3728 100644 --- a/Software/PC_Application/Device/device.cpp +++ b/Software/PC_Application/Device/device.cpp @@ -5,6 +5,7 @@ #include #include #include +#include "CustomWidgets/informationbox.h" using namespace std; @@ -169,8 +170,7 @@ Device::Device(QString serial) if(!m_handle) { QString message = "No device found"; - auto msg = new QMessageBox(QMessageBox::Icon::Warning, "Error opening device", message); - msg->show(); + InformationBox::ShowError("Error opening device", message); libusb_exit(m_context); throw std::runtime_error(message.toStdString()); return; @@ -186,8 +186,7 @@ Device::Device(QString serial) message.append(libusb_strerror((libusb_error) ret)); message.append("\" Maybe you are already connected to this device?"); qWarning() << message; - auto msg = new QMessageBox(QMessageBox::Icon::Warning, "Error opening device", message); - msg->show(); + InformationBox::ShowError("Error opening device", message); libusb_exit(m_context); throw std::runtime_error(message.toStdString()); } @@ -359,8 +358,7 @@ void Device::SearchDevices(std::function "this device (is another instance of the application already runnning? " "If that is not the case, you can try installing the WinUSB driver using Zadig (https://zadig.akeo.ie/)"); qWarning() << message; - auto msg = new QMessageBox(QMessageBox::Icon::Warning, "Error opening device", message); - msg->show(); + InformationBox::ShowError("Error opening device", message); } continue; } diff --git a/Software/PC_Application/Traces/Math/medianfilter.cpp b/Software/PC_Application/Traces/Math/medianfilter.cpp index 5f225f2..c0a9691 100644 --- a/Software/PC_Application/Traces/Math/medianfilter.cpp +++ b/Software/PC_Application/Traces/Math/medianfilter.cpp @@ -2,7 +2,7 @@ #include "ui_medianfilterdialog.h" #include "ui_medianexplanationwidget.h" -#include +#include "CustomWidgets/informationbox.h" using namespace Math; using namespace std; @@ -34,7 +34,7 @@ void MedianFilter::edit() connect(ui->kernelSize, qOverload(&QSpinBox::valueChanged), [=](int newval) { if((newval & 0x01) == 0) { - QMessageBox::information(d, "Median filter", "Only odd values are allowed for the kernel size"); + InformationBox::ShowMessageBlocking("Median filter", "Only odd values are allowed for the kernel size"); newval++; } ui->kernelSize->setValue(newval); diff --git a/Software/PC_Application/VNA/Deembedding/portextension.h b/Software/PC_Application/VNA/Deembedding/portextension.h index 5c7348c..53e4e81 100644 --- a/Software/PC_Application/VNA/Deembedding/portextension.h +++ b/Software/PC_Application/VNA/Deembedding/portextension.h @@ -41,12 +41,10 @@ private: // status variables for automatic measurements Calkit *kit; -// bool measuring; bool isPort1; bool isOpen; bool isIdeal; -// std::vector measurements; - QMessageBox *msgBox; + Ui::PortExtensionEditDialog *ui; }; diff --git a/Software/PC_Application/VNA/Deembedding/twothru.h b/Software/PC_Application/VNA/Deembedding/twothru.h index 786cb2b..f8c0bdf 100644 --- a/Software/PC_Application/VNA/Deembedding/twothru.h +++ b/Software/PC_Application/VNA/Deembedding/twothru.h @@ -41,7 +41,6 @@ private: std::vector points; bool measuring2xthru; bool measuringDUT; - QMessageBox *msgBox; Ui::TwoThruDialog *ui; }; diff --git a/Software/PC_Application/VNA/vna.cpp b/Software/PC_Application/VNA/vna.cpp index d236cb7..0859876 100644 --- a/Software/PC_Application/VNA/vna.cpp +++ b/Software/PC_Application/VNA/vna.cpp @@ -1062,7 +1062,7 @@ void VNA::ApplyCalibration(Calibration::Type type) DisableCalibration(true); } } catch (runtime_error e) { - QMessageBox::critical(window, "Calibration failure", e.what()); + InformationBox::ShowError("Calibration failure", e.what()); DisableCalibration(true); } } else { @@ -1325,6 +1325,35 @@ void VNA::SetupSCPI() scpi_cal->add(new SCPICommand("BUSy", nullptr, [=](QStringList) -> QString { return CalibrationMeasurementActive() ? "TRUE" : "FALSE"; })); + scpi_cal->add(new SCPICommand("SAVE", [=](QStringList params) -> QString { + if(params.size() != 1 || !calValid) { + // no filename given or no calibration active + return "ERROR"; + } + if(!cal.saveToFile(params[0])) { + // some error when writing the calibration file + return "ERROR"; + } + calEdited = false; + return ""; + }, nullptr)); + scpi_cal->add(new SCPICommand("LOAD", nullptr, [=](QStringList params) -> QString { + if(params.size() != 1) { + // no filename given or no calibration active + return "FALSE"; + } + if(!cal.openFromFile(params[0])) { + // some error when loading the calibration file + return "FALSE"; + } + if(cal.getType() == Calibration::Type::None) { + DisableCalibration(); + } else { + ApplyCalibration(cal.getType()); + } + calEdited = false; + return "TRUE"; + })); } void VNA::ConstrainAndUpdateFrequencies() diff --git a/Software/PC_Application/appwindow.cpp b/Software/PC_Application/appwindow.cpp index 5f6e360..063a6b1 100644 --- a/Software/PC_Application/appwindow.cpp +++ b/Software/PC_Application/appwindow.cpp @@ -49,6 +49,7 @@ #include "Calibration/frequencycaldialog.h" #include #include "CustomWidgets/jsonpickerdialog.h" +#include "CustomWidgets/informationbox.h" #include #include "Util/app_common.h" #include "about.h" @@ -181,7 +182,7 @@ AppWindow::AppWindow(QWidget *parent) try { file >> j; } catch (exception &e) { - QMessageBox::warning(nullptr, "Error", "Failed to parse the setup file (" + QString(e.what()) + ")"); + InformationBox::ShowError("Error", "Failed to parse the setup file (" + QString(e.what()) + ")"); qWarning() << "Parsing of setup file failed: " << e.what(); } file.close(); @@ -252,8 +253,11 @@ AppWindow::AppWindow(QWidget *parent) ConnectToDevice(); } if(!parser.isSet("no-gui")) { + InformationBox::setGUI(true); resize(1280, 800); show(); + } else { + InformationBox::setGUI(false); } } @@ -357,7 +361,7 @@ void AppWindow::DisconnectDevice() void AppWindow::DeviceConnectionLost() { DisconnectDevice(); - QMessageBox::warning(this, "Disconnected", "The USB connection to the device has been lost"); + InformationBox::ShowError("Disconnected", "The USB connection to the device has been lost"); UpdateDeviceList(); } @@ -885,12 +889,11 @@ void AppWindow::StartFirmwareUpdateDialog() void AppWindow::DeviceNeedsUpdate(int reported, int expected) { - auto ret = QMessageBox::warning(this, "Warning", + auto ret = InformationBox::AskQuestion("Warning", "The device reports a different protocol" "version (" + QString::number(reported) + ") than expected (" + QString::number(expected) + ").\n" - "A firmware update is strongly recommended. Do you want to update now?", - QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); - if (ret == QMessageBox::Yes) { + "A firmware update is strongly recommended. Do you want to update now?", false); + if (ret) { StartFirmwareUpdateDialog(); } } diff --git a/Software/PC_Application/preferences.cpp b/Software/PC_Application/preferences.cpp index c737855..738d10e 100644 --- a/Software/PC_Application/preferences.cpp +++ b/Software/PC_Application/preferences.cpp @@ -99,7 +99,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) : // Reset and OK action connect(ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, [=](){ - if(QMessageBox::question(this, "Restore defaults?", "Do you really want to set all preferences to their default values?") == QMessageBox::StandardButton::Yes) { + if(InformationBox::AskQuestion("Restore defaults?", "Do you really want to set all preferences to their default values?", true)) { p->setDefault(); setInitialGUIState(); }