From 7fcac35549e44e3e6c49a5878a0d4a3cd6092198 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Tue, 17 Nov 2020 17:39:34 +0100 Subject: [PATCH] gui exception thrown from acquire caught properly in gui --- slsDetectorGui/include/qDrawPlot.h | 4 ++-- slsDetectorGui/include/qTabMeasurement.h | 2 +- slsDetectorGui/src/qDetectorMain.cpp | 3 ++- slsDetectorGui/src/qDrawPlot.cpp | 13 +++++-------- slsDetectorGui/src/qTabMeasurement.cpp | 5 ++++- slsDetectorSoftware/src/DetectorImpl.cpp | 8 ++++---- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/slsDetectorGui/include/qDrawPlot.h b/slsDetectorGui/include/qDrawPlot.h index 205870d88..03277ff49 100644 --- a/slsDetectorGui/include/qDrawPlot.h +++ b/slsDetectorGui/include/qDrawPlot.h @@ -1,6 +1,6 @@ #pragma once -#include "sls/Detector.h" #include "qDefs.h" +#include "sls/Detector.h" #include "ui_form_plot.h" #include @@ -63,7 +63,7 @@ class qDrawPlot : public QWidget, private Ui::PlotObject { signals: void AcquireFinishedSignal(); - void AbortSignal(); + void AbortSignal(QString); void UpdateSignal(); private: diff --git a/slsDetectorGui/include/qTabMeasurement.h b/slsDetectorGui/include/qTabMeasurement.h index da04af85d..b1b1270a5 100644 --- a/slsDetectorGui/include/qTabMeasurement.h +++ b/slsDetectorGui/include/qTabMeasurement.h @@ -16,7 +16,7 @@ class qTabMeasurement : public QWidget, private Ui::TabMeasurementObject { public slots: void AcquireFinished(); - void AbortAcquire(); + void AbortAcquire(QString exmsg); private slots: void SetTimingMode(int val); diff --git a/slsDetectorGui/src/qDetectorMain.cpp b/slsDetectorGui/src/qDetectorMain.cpp index 7ac03002e..2ca2c1291 100644 --- a/slsDetectorGui/src/qDetectorMain.cpp +++ b/slsDetectorGui/src/qDetectorMain.cpp @@ -270,7 +270,8 @@ void qDetectorMain::Initialization() { // Plotting connect(plot, SIGNAL(AcquireFinishedSignal()), tabMeasurement, SLOT(AcquireFinished())); - connect(plot, SIGNAL(AbortSignal()), tabMeasurement, SLOT(AbortAcquire())); + connect(plot, SIGNAL(AbortSignal(QString)), tabMeasurement, + SLOT(AbortAcquire(QString))); // menubar // Modes Menu diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp index 386c09892..c10646a8b 100644 --- a/slsDetectorGui/src/qDrawPlot.cpp +++ b/slsDetectorGui/src/qDrawPlot.cpp @@ -672,18 +672,15 @@ void qDrawPlot::AcquireThread() { // handle it if (!mess.empty()) { LOG(logERROR) << "Acquisition Finished with an exception: " << mess; - qDefs::ExceptionMessage("Acquire unsuccessful.", mess, - "qDrawPlot::AcquireFinished"); + // qDefs::ExceptionMessage("Acquire unsuccessful.", mess, + // "qDrawPlot::AcquireFinished"); try { det->stopDetector(); - } - CATCH_DISPLAY("Could not stop detector acquisition.", - "qDrawPlot::AcquireFinished"); - try { det->stopReceiver(); + } catch (...) { + ; } - CATCH_DISPLAY("Could not stop receiver.", "qDrawPlot::AcquireFinished"); - emit AbortSignal(); + emit AbortSignal(QString(mess.c_str())); } LOG(logDEBUG) << "End of Acquisition Finished"; } diff --git a/slsDetectorGui/src/qTabMeasurement.cpp b/slsDetectorGui/src/qTabMeasurement.cpp index 6e09c2ba0..f9510e0cd 100644 --- a/slsDetectorGui/src/qTabMeasurement.cpp +++ b/slsDetectorGui/src/qTabMeasurement.cpp @@ -948,8 +948,11 @@ void qTabMeasurement::AcquireFinished() { } } -void qTabMeasurement::AbortAcquire() { +void qTabMeasurement::AbortAcquire(QString exmsg) { LOG(logINFORED) << "Abort Acquire"; + qDefs::ExceptionMessage("Acquire unsuccessful.", + exmsg.toAscii().constData(), + "qDrawPlot::AcquireFinished"); isAcquisitionStopped = true; AcquireFinished(); } diff --git a/slsDetectorSoftware/src/DetectorImpl.cpp b/slsDetectorSoftware/src/DetectorImpl.cpp index daa81f997..925d95106 100644 --- a/slsDetectorSoftware/src/DetectorImpl.cpp +++ b/slsDetectorSoftware/src/DetectorImpl.cpp @@ -1079,13 +1079,13 @@ int DetectorImpl::acquire() { } } - startProcessingThread(receiver); - // start receiver if (receiver) { Parallel(&Module::startReceiver, {}); } + startProcessingThread(receiver); + // start and read all try { Parallel(&Module::startAndReadAll, {}); @@ -1126,10 +1126,10 @@ int DetectorImpl::acquire() { (end.tv_nsec - begin.tv_nsec) / 1000000000.0) << " seconds"; } catch (...) { - if (dataProcessingThread.joinable()){ + if (dataProcessingThread.joinable()) { setJoinThreadFlag(true); dataProcessingThread.join(); - } + } setAcquiringFlag(false); throw; }