From df6774e2c648d696b2216623beee63e55cdc7ce1 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Fri, 17 May 2013 09:51:31 +0000 Subject: [PATCH] users:double for time in ns, bugfix:readframe wen no gui, return ok for config git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@564 951219d9-93cf-4727-9268-0efd64621fa3 --- .../multiSlsDetector/multiSlsDetector.cpp | 10 +++- .../slsDetector/slsDetector.cpp | 8 +-- .../slsDetector/slsDetectorUsers.cpp | 15 +++++ .../slsDetector/slsDetectorUsers.h | 22 +++++++ .../slsDetector/slsDetectorUtils.cpp | 4 +- .../slsDetectorAnalysis/postProcessing.cpp | 60 ++++++++++--------- 6 files changed, 83 insertions(+), 36 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index b54f50d9b..4d30664ea 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -3898,7 +3898,7 @@ int multiSlsDetector::readConfigurationFile(string const fname){ setNumberOfModules(-1); getMaxNumberOfModules(); - return iline; + return OK; }; @@ -3988,7 +3988,7 @@ int multiSlsDetector::writeConfigurationFile(string const fname){ std::cout<< "wrote " <dataBytes)/sizeof(int); + if(nel <= 0){ + cout << "Multislsdetector databytes not valid :" << thisMultiDetector->dataBytes << endl; + fIndex = -1; + return NULL; + } + int n; int* retval=new int[nel]; int *retdet, *p=retval; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 7f5335c29..3c5a9dc78 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -5246,7 +5246,7 @@ int slsDetector::readConfigurationFile(string const fname){ #ifdef VERBOSE std::cout<< "Read configuration file of " << iline << " lines" << std::endl; #endif - return iline; + return OK; } @@ -5308,7 +5308,7 @@ int slsDetector::readConfigurationFile(ifstream &infile){ iline++; } delete cmd; - return iline; + return OK; } @@ -5339,7 +5339,7 @@ int slsDetector::writeConfigurationFile(string const fname){ #ifdef VERBOSE std::cout<< "wrote " <setDelayAfterTrigger(t); } +double slsDetectorUsers::setExposureTime(double t){ + int64_t tms = t * 1E+9; + return 1E-9 * (double)myDetector->setExposureTime(tms); +} + +double slsDetectorUsers::setExposurePeriod(double t){ + int64_t tms = t * 1E+9; + return 1E-9 * (double)myDetector->setExposurePeriod(tms); +} + +double slsDetectorUsers::setDelayAfterTrigger(double t){ + int64_t tms = t * 1E+9; + return 1E-9 * (double)(myDetector->setDelayAfterTrigger(tms)); +} + int64_t slsDetectorUsers::setNumberOfGates(int64_t t){ return myDetector->setNumberOfGates(t); } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h index cf18b50bc..115a62162 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUsers.h +++ b/slsDetectorSoftware/slsDetector/slsDetectorUsers.h @@ -335,6 +335,28 @@ class slsDetectorUsers */ int64_t setDelayAfterTrigger(int64_t t=-1); + /** + @short set/get exposure time value + \param t time in s (-1 gets) + \returns timer set value in s + */ + + double setExposureTime(double t=-1); + + /** + @short set/get exposure period + \param t time in s (-1 gets) + \returns timer set value in s + */ + double setExposurePeriod(double t=-1); + + /** + @short set/get delay after trigger + \param t time in s (-1 gets) + \returns timer set value in s + */ + double setDelayAfterTrigger(double t=-1); + /** @short set/get number of gates \param t number of gates (-1 gets) diff --git a/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp b/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp index 5679c08b6..e47664736 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorUtils.cpp @@ -726,7 +726,7 @@ int slsDetectorUtils::retrieveDetectorSetup(string const fname1, int level){ #ifdef VERBOSE std::cout<< "Read " << iline << " lines" << std::endl; #endif - return iline; + return OK; } @@ -869,7 +869,7 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){ std::cout<< "wrote " <=0){ - fdata=decodeData(receiverData); - delete [] receiverData; - if(fdata){ - if (dataReady) { - thisData=new detectorData(fdata,NULL,NULL,getCurrentProgress(),currentfName,getTotalNumberOfChannels()); - dataReady(thisData, currentfIndex, pCallbackArg); - delete thisData; - fdata=NULL; + if (dataReady){ + + if(caught-prevCaught) newData=true; + else newData=false; + prevCaught=caught; + + //read frame if new data + if (newData){ + strcpy(currentfName,""); + pthread_mutex_lock(&mg); + int* receiverData = readFrameFromReceiver(currentfName,currentfIndex); + pthread_mutex_unlock(&mg); + if(setReceiverOnline()==OFFLINE_FLAG) + receiverData = NULL; + if(receiverData == NULL){ + currentfIndex = -1; + cout<<"****Detector Data returned is NULL***"<=0){ + fdata=decodeData(receiverData); + delete [] receiverData; + if(fdata){ + if (dataReady) { + thisData=new detectorData(fdata,NULL,NULL,getCurrentProgress(),currentfName,getTotalNumberOfChannels()); + dataReady(thisData, currentfIndex, pCallbackArg); + delete thisData; + fdata=NULL; + } } } - } - else{ - ;//cout<<"****Detector returned mismatched indices/garbage or acquisition is over. Trying again.***"<