diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer index 8e5351648..ba5910488 100755 Binary files a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer and b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServer differ diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 16aec2987..9172ad702 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -622,10 +622,10 @@ int startStateMachine(){ int stopStateMachine(){ - printf("Going to stop acquisition\n"); + cprintf(BG_RED,"Going to stop acquisition\n"); if(Feb_Control_StopAcquisition() & Beb_StopAcquisition()) return OK; - printf("failed to stop acquisition\n"); + cprintf(BG_RED,"failed to stop acquisition\n"); return FAIL; } diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 909d2e34d..ee3cc4c48 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -1293,66 +1293,72 @@ int multiSlsDetector::startReadOut(){ int* multiSlsDetector::getDataFromDetector() { - int nel=thisMultiDetector->dataBytes/sizeof(int); - int n; - int* retval=new int[nel]; - int *retdet, *p=retval; - int nodata=1, nodatadet=-1;; - + int nel=thisMultiDetector->dataBytes/sizeof(int); + int n; + int* retval=new int[nel]; + int *retdet, *p=retval; + int nodata=1, nodatadet=-1;; - for (int id=0; idnumberOfDetectors; id++) { - if (detectors[id]) { - retdet=detectors[id]->getDataFromDetector(p); - n=detectors[id]->getDataBytes(); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; id++) { + if (detectors[id]) { + retdet=detectors[id]->getDataFromDetector(p); + n=detectors[id]->getDataBytes(); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { - for (int id=0; idnumberOfDetectors; id++) { - if (id!=nodatadet) { - if (detectors[id]) { -#ifdef VERBOSE - cout << "Stopping detector "<< id << endl; -#endif - detectors[id]->stopAcquisition(); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<getDataFromDetector())) { - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<getErrorMask()) - setErrorMask(getErrorMask()|(1<getDetectorsType() != EIGER) + break; + } + p+=n/sizeof(int); + } } - } - } - delete [] retval; - return NULL; - } - return retval; + //eiger returns only null + if(getDetectorsType() == EIGER) + return NULL; + + if (nodatadet>=0) { + for (int id=0; idnumberOfDetectors; id++) { + if (id!=nodatadet) { + if (detectors[id]) { +#ifdef VERBOSE + cout << "Stopping detector "<< id << endl; +#endif + detectors[id]->stopAcquisition(); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getDataFromDetector())) { + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getErrorMask()) + setErrorMask(getErrorMask()|(1<dataBytes/sizeof(int); - int n; + int nel=thisDetector->dataBytes/sizeof(int); + int n; - int *r=retval; + int *r=retval; - // int* retval=new int[nel]; + // int* retval=new int[nel]; - if (retval==NULL) - retval=new int[nel]; + if (retval==NULL) + retval=new int[nel]; - int ret=FAIL; - char mess[100]="Nothing"; + int ret=FAIL; + char mess[100]="Nothing"; #ifdef VERBOSE - std::cout<< "getting data "<< thisDetector->dataBytes << " " << nel<< std::endl; + std::cout<< "getting data "<< thisDetector->dataBytes << " " << nel<< std::endl; #endif - controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); + controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); #ifdef VERBOSE - cout << "ret=" << ret << endl; + cout << "ret=" << ret << endl; #endif - if (ret!=OK) { - n= controlSocket->ReceiveDataOnly(mess,sizeof(mess)); - // if(thisDetector->receiverOnlineFlag == OFFLINE_FLAG) - if (ret==FAIL) { - thisDetector->stoppedFlag=1; - std::cout<< "Detector returned: " << mess << " " << n << std::endl; - } else { - ; + if (ret!=OK) { + n= controlSocket->ReceiveDataOnly(mess,sizeof(mess)); + // if(thisDetector->receiverOnlineFlag == OFFLINE_FLAG) + if (ret==FAIL) { + thisDetector->stoppedFlag=1; + std::cout<< "Detector returned: " << mess << " " << n << std::endl; + } else { + ; #ifdef VERBOSE - std::cout<< "Detector successfully returned: " << mess << " " << n << std::endl; + std::cout<< "Detector successfully returned: " << mess << " " << n << std::endl; #endif - } - if (r==NULL) { - delete [] retval; - } - return NULL; - } else { - n=controlSocket->ReceiveDataOnly(retval,thisDetector->dataBytes); + } + if (r==NULL) { + delete [] retval; + } + return NULL; + } else { + n=controlSocket->ReceiveDataOnly(retval,thisDetector->dataBytes); - // #ifdef VERBOSE - std::cout<< "Received "<< n << " data bytes" << std::endl; - // #endif - if (n!=thisDetector->dataBytes) { - std::cout<< "wrong data size received: received " << n << " but expected " << thisDetector->dataBytes << std::endl; - thisDetector->stoppedFlag=1; - ret=FAIL; - if (r==NULL) { - delete [] retval; - } - return NULL; - } - } - // cout << "get data returning " << endl; - return retval; +#ifdef VERBOSE + std::cout<< "Received "<< n << " data bytes" << std::endl; +#endif + if (n!=thisDetector->dataBytes) { + std::cout<< "wrong data size received: received " << n << " but expected " << thisDetector->dataBytes << std::endl; + thisDetector->stoppedFlag=1; + ret=FAIL; + if (r==NULL) { + delete [] retval; + } + return NULL; + } + } + // cout << "get data returning " << endl; + return retval; }; @@ -5207,8 +5207,10 @@ char* slsDetector::setDetectorIP(string detectorIP){ char* slsDetector::setReceiver(string receiverIP){ - if(getRunStatus()==RUNNING) + if(getRunStatus()==RUNNING){ + cprintf(RED,"Acquisition already running, Stopping it.\n"); stopAcquisition(); + } strcpy(thisDetector->receiver_hostname,receiverIP.c_str());