From baee38802bd8aed24f5eb8f17431ec1dce84fb5a Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 30 Nov 2017 16:20:26 +0100 Subject: [PATCH] wait state between acquistion finished and ready for next acquire in gui, check if acquiringflag is set then reset it --- slsDetectorGui/include/qDrawPlot.h | 1 + slsDetectorGui/include/qTabMeasurement.h | 4 ++++ slsDetectorGui/src/qDetectorMain.cpp | 1 + slsDetectorGui/src/qDrawPlot.cpp | 11 +++++++---- slsDetectorGui/src/qTabMeasurement.cpp | 11 ++++++++++- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/slsDetectorGui/include/qDrawPlot.h b/slsDetectorGui/include/qDrawPlot.h index 9cb143e1f..32cd2aa77 100644 --- a/slsDetectorGui/include/qDrawPlot.h +++ b/slsDetectorGui/include/qDrawPlot.h @@ -585,6 +585,7 @@ void SetCurrentMeasurementSignal(int); void saveErrorSignal(QString); void AcquisitionErrorSignal(QString); void UpdatePlotSignal(); +void AcquisitionFinishedSignal(); }; diff --git a/slsDetectorGui/include/qTabMeasurement.h b/slsDetectorGui/include/qTabMeasurement.h index 76180933a..8b925a343 100644 --- a/slsDetectorGui/include/qTabMeasurement.h +++ b/slsDetectorGui/include/qTabMeasurement.h @@ -65,6 +65,10 @@ public: public slots: + /** Unconnects start/stop button when acquisition is finished + */ + void AcquisitionFinished(); + /** update plot is finished, * changes start/stop text and enables/disables all widgets */ diff --git a/slsDetectorGui/src/qDetectorMain.cpp b/slsDetectorGui/src/qDetectorMain.cpp index f33af996a..351b96c4b 100644 --- a/slsDetectorGui/src/qDetectorMain.cpp +++ b/slsDetectorGui/src/qDetectorMain.cpp @@ -329,6 +329,7 @@ void qDetectorMain::Initialization(){ // Plotting // When the acquisition is finished, must update the meas tab connect(myPlot, SIGNAL(UpdatingPlotFinished()), this, SLOT(EnableTabs())); + connect(myPlot, SIGNAL(AcquisitionFinishedSignal()), tab_measurement, SLOT(AcquisitionFinished())); connect(myPlot, SIGNAL(UpdatingPlotFinished()), tab_measurement, SLOT(UpdateFinished())); //This should not be called as it will change file name to measurement when run finished //connect(myPlot, SIGNAL(UpdatingPlotFinished()), tab_plot, SLOT(Refresh())); diff --git a/slsDetectorGui/src/qDrawPlot.cpp b/slsDetectorGui/src/qDrawPlot.cpp index 8a633542e..89ff503ee 100644 --- a/slsDetectorGui/src/qDrawPlot.cpp +++ b/slsDetectorGui/src/qDrawPlot.cpp @@ -743,7 +743,11 @@ void* qDrawPlot::DataStartAcquireThread(void *this_pointer){ } } + if (((qDrawPlot*)this_pointer)->myDet->getAcquiringFlag() == true) { + ((qDrawPlot*)this_pointer)->myDet->setAcquiringFlag(false); + } ((qDrawPlot*)this_pointer)->myDet->acquire(1); + return this_pointer; } @@ -1208,6 +1212,7 @@ int qDrawPlot::AcquisitionFinished(double currentProgress, int detectorStatus){ #ifdef VERBOSE cout << "\nEntering Acquisition Finished with status " ; #endif + emit AcquisitionFinishedSignal(); QString status = QString(slsDetectorBase::runStatusType(slsDetectorDefs::runStatus(detectorStatus)).c_str()); #ifdef VERBOSE cout << status.toAscii().constData() << " and progress " << currentProgress << endl; @@ -1220,14 +1225,12 @@ int qDrawPlot::AcquisitionFinished(double currentProgress, int detectorStatus){ //stop_signal = 1;//just to be sure emit AcquisitionErrorSignal(status); } - +#ifdef VERBOSE //all measurements are over else if(currentProgress==100){ -#ifdef VERBOSE cout << "Acquisition Finished" << endl << endl; -#endif } - +#endif StartStopDaqToggle(true); //this lets the measurement tab know its over, and to enable tabs emit UpdatingPlotFinished(); diff --git a/slsDetectorGui/src/qTabMeasurement.cpp b/slsDetectorGui/src/qTabMeasurement.cpp index 33046ab71..50c0d2497 100644 --- a/slsDetectorGui/src/qTabMeasurement.cpp +++ b/slsDetectorGui/src/qTabMeasurement.cpp @@ -374,6 +374,15 @@ void qTabMeasurement::startStopAcquisition(){ //------------------------------------------------------------------------------------------------------------------------------------------------- +void qTabMeasurement::AcquisitionFinished(){ + disconnect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition())); + btnStartStop->setText("Wait"); +} + + +//------------------------------------------------------------------------------------------------------------------------------------------------- + + void qTabMeasurement::UpdateFinished(){ UpdateProgress(); disconnect(spinIndex, SIGNAL(valueChanged(int)), this, SLOT(setRunIndex(int))); @@ -381,7 +390,7 @@ void qTabMeasurement::UpdateFinished(){ connect(spinIndex, SIGNAL(valueChanged(int)), this, SLOT(setRunIndex(int))); progressTimer->stop(); - disconnect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition())); + /*disconnect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition())); done in AcquisitionFinished() already */ btnStartStop->setText("Start"); btnStartStop->setIcon(*iconStart); btnStartStop->setChecked(false);