gui exception thrown from acquire caught properly in gui

This commit is contained in:
maliakal_d 2020-11-17 17:39:34 +01:00
parent 6563965787
commit 7fcac35549
6 changed files with 18 additions and 17 deletions

View File

@ -1,6 +1,6 @@
#pragma once #pragma once
#include "sls/Detector.h"
#include "qDefs.h" #include "qDefs.h"
#include "sls/Detector.h"
#include "ui_form_plot.h" #include "ui_form_plot.h"
#include <mutex> #include <mutex>
@ -63,7 +63,7 @@ class qDrawPlot : public QWidget, private Ui::PlotObject {
signals: signals:
void AcquireFinishedSignal(); void AcquireFinishedSignal();
void AbortSignal(); void AbortSignal(QString);
void UpdateSignal(); void UpdateSignal();
private: private:

View File

@ -16,7 +16,7 @@ class qTabMeasurement : public QWidget, private Ui::TabMeasurementObject {
public slots: public slots:
void AcquireFinished(); void AcquireFinished();
void AbortAcquire(); void AbortAcquire(QString exmsg);
private slots: private slots:
void SetTimingMode(int val); void SetTimingMode(int val);

View File

@ -270,7 +270,8 @@ void qDetectorMain::Initialization() {
// Plotting // Plotting
connect(plot, SIGNAL(AcquireFinishedSignal()), tabMeasurement, connect(plot, SIGNAL(AcquireFinishedSignal()), tabMeasurement,
SLOT(AcquireFinished())); SLOT(AcquireFinished()));
connect(plot, SIGNAL(AbortSignal()), tabMeasurement, SLOT(AbortAcquire())); connect(plot, SIGNAL(AbortSignal(QString)), tabMeasurement,
SLOT(AbortAcquire(QString)));
// menubar // menubar
// Modes Menu // Modes Menu

View File

@ -672,18 +672,15 @@ void qDrawPlot::AcquireThread() {
// handle it // handle it
if (!mess.empty()) { if (!mess.empty()) {
LOG(logERROR) << "Acquisition Finished with an exception: " << mess; LOG(logERROR) << "Acquisition Finished with an exception: " << mess;
qDefs::ExceptionMessage("Acquire unsuccessful.", mess, // qDefs::ExceptionMessage("Acquire unsuccessful.", mess,
"qDrawPlot::AcquireFinished"); // "qDrawPlot::AcquireFinished");
try { try {
det->stopDetector(); det->stopDetector();
}
CATCH_DISPLAY("Could not stop detector acquisition.",
"qDrawPlot::AcquireFinished");
try {
det->stopReceiver(); det->stopReceiver();
} catch (...) {
;
} }
CATCH_DISPLAY("Could not stop receiver.", "qDrawPlot::AcquireFinished"); emit AbortSignal(QString(mess.c_str()));
emit AbortSignal();
} }
LOG(logDEBUG) << "End of Acquisition Finished"; LOG(logDEBUG) << "End of Acquisition Finished";
} }

View File

@ -948,8 +948,11 @@ void qTabMeasurement::AcquireFinished() {
} }
} }
void qTabMeasurement::AbortAcquire() { void qTabMeasurement::AbortAcquire(QString exmsg) {
LOG(logINFORED) << "Abort Acquire"; LOG(logINFORED) << "Abort Acquire";
qDefs::ExceptionMessage("Acquire unsuccessful.",
exmsg.toAscii().constData(),
"qDrawPlot::AcquireFinished");
isAcquisitionStopped = true; isAcquisitionStopped = true;
AcquireFinished(); AcquireFinished();
} }

View File

@ -1079,13 +1079,13 @@ int DetectorImpl::acquire() {
} }
} }
startProcessingThread(receiver);
// start receiver // start receiver
if (receiver) { if (receiver) {
Parallel(&Module::startReceiver, {}); Parallel(&Module::startReceiver, {});
} }
startProcessingThread(receiver);
// start and read all // start and read all
try { try {
Parallel(&Module::startAndReadAll, {}); Parallel(&Module::startAndReadAll, {});
@ -1126,7 +1126,7 @@ int DetectorImpl::acquire() {
(end.tv_nsec - begin.tv_nsec) / 1000000000.0) (end.tv_nsec - begin.tv_nsec) / 1000000000.0)
<< " seconds"; << " seconds";
} catch (...) { } catch (...) {
if (dataProcessingThread.joinable()){ if (dataProcessingThread.joinable()) {
setJoinThreadFlag(true); setJoinThreadFlag(true);
dataProcessingThread.join(); dataProcessingThread.join();
} }