From 9c82a8f726a5afb87b0f1f686d4cf1cc97d62a81 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 26 Oct 2017 11:19:58 +0200 Subject: [PATCH] temp in between, trying to get 4 bitmode to work without gap pixels --- .../multiSlsDetector/multiSlsDetector.cpp | 26 ++++++++------ .../slsDetector/slsDetector.cpp | 34 +++++++++++-------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 0a4312095..881c5eb15 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -5791,9 +5791,7 @@ int multiSlsDetector::getData(const int isocket, char* image, const int size, void multiSlsDetector::readFrameFromReceiver(){ - //determine number of half readouts and maxX and maxY - int maxX=thisMultiDetector->numberOfChannelInclGapPixels[X]; - int maxY=thisMultiDetector->numberOfChannelInclGapPixels[Y]; + //determine number of sockets int numSockets = thisMultiDetector->numberOfDetectors; int numSocketsPerSLSDetector = 1; bool jungfrau = false; @@ -5822,12 +5820,17 @@ void multiSlsDetector::readFrameFromReceiver(){ int slsdatabytes = 0, slsmaxchannels = 0, slsmaxX = 0, slsmaxY=0; double bytesperchannel = 0; if(detectors[0]){ - slsdatabytes = detectors[0]->getDataBytesInclGapPixels(); - slsmaxchannels = (detectors[0]->getMaxNumberOfChannelsInclGapPixels(X)*detectors[0]->getMaxNumberOfChannelsInclGapPixels(Y)); bytesperchannel = (double)slsdatabytes/(double)slsmaxchannels; - slsmaxX = detectors[0]->getTotalNumberOfChannelsInclGapPixels(X); - slsmaxY = detectors[0]->getTotalNumberOfChannelsInclGapPixels(Y); + slsdatabytes = (bytesperchannel < 1) ? detectors[0]->getDataBytes() : detectors[0]->getDataBytesInclGapPixels(); + slsmaxchannels = (bytesperchannel < 1) ? (detectors[0]->getMaxNumberOfChannels(X) * detectors[0]->getMaxNumberOfChannels(Y)) : + (detectors[0]->getMaxNumberOfChannelsInclGapPixels(X)*detectors[0]->getMaxNumberOfChannelsInclGapPixels(Y)); + slsmaxX = (bytesperchannel < 1) ? detectors[0]->getTotalNumberOfChannels(X) : detectors[0]->getTotalNumberOfChannelsInclGapPixels(X); + slsmaxY = (bytesperchannel < 1) ? detectors[0]->getTotalNumberOfChannels(Y) : detectors[0]->getTotalNumberOfChannelsInclGapPixels(Y); } + // max channel values + int maxX = (bytesperchannel < 1) ? thisMultiDetector->numberOfChannel[X] : thisMultiDetector->numberOfChannelInclGapPixels[X]; + int maxY = (bytesperchannel < 1) ? thisMultiDetector->numberOfChannel[Y] : thisMultiDetector->numberOfChannelInclGapPixels[Y]; + int multidatabytes = (bytesperchannel < 1) ? thisMultiDetector->dataBytes : thisMultiDetector->dataBytesInclGapPixels; //getting multi values //calculating offsets (for eiger interleaving ports) @@ -5848,10 +5851,10 @@ void multiSlsDetector::readFrameFromReceiver(){ int expectedslssize = slsdatabytes/numSocketsPerSLSDetector; char* image = new char[expectedslssize](); - char* multiframe = new char[thisMultiDetector->dataBytesInclGapPixels](); + char* multiframe = new char[multidatabytes](); char* multiframegain = NULL; if (jungfrau) - multiframegain = new char[thisMultiDetector->dataBytesInclGapPixels](); + multiframegain = new char[multidatabytes](); int nch; @@ -5933,8 +5936,11 @@ void multiSlsDetector::readFrameFromReceiver(){ //send data to callback if(running){ + + + if(dataReady) { - thisData = new detectorData(NULL,NULL,NULL,getCurrentProgress(),currentFileName.c_str(),maxX,maxY,multiframe, thisMultiDetector->dataBytesInclGapPixels); + thisData = new detectorData(NULL,NULL,NULL,getCurrentProgress(),currentFileName.c_str(),maxX,maxY,multiframe, multidatabytes); dataReady(thisData, currentFrameIndex, currentSubFrameIndex, pCallbackArg); delete thisData; //cout<<"Send frame #"<< currentFrameIndex << " to gui"<0)?1:0; // send to receiver - int retval=-1; - int fnum=F_ENABLE_GAPPIXELS_IN_RECEIVER; - int ret=FAIL; - int arg=val; - if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) { - if (connectData() == OK){ - ret=thisReceiver->sendInt(fnum,retval,arg); - disconnectData(); - } - if((arg != retval) || (ret==FAIL)){ - ret = FAIL; - setErrorMask((getErrorMask())|(RECEIVER_ENABLE_GAPPIXELS_NOT_SET)); - } + int ret=OK; - if(ret==FORCE_UPDATE) - updateReceiver(); + if (thisDetector->dynamicRange != 4) { + ret = FAIL; + int retval=-1; + int fnum=F_ENABLE_GAPPIXELS_IN_RECEIVER; + int arg=val; + if (thisDetector->receiverOnlineFlag==ONLINE_FLAG) { + if (connectData() == OK){ + ret=thisReceiver->sendInt(fnum,retval,arg); + disconnectData(); + } + if((arg != retval) || (ret==FAIL)){ + ret = FAIL; + setErrorMask((getErrorMask())|(RECEIVER_ENABLE_GAPPIXELS_NOT_SET)); + } + + if(ret==FORCE_UPDATE) + updateReceiver(); + } } // update client