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

View File

@ -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);

View File

@ -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

View File

@ -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";
}

View File

@ -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();
}

View File

@ -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;
}