This commit is contained in:
Dhanya Maliakal 2016-10-18 12:08:11 +02:00
parent 9f28cc686c
commit 3a6d97b4f3
3 changed files with 47 additions and 21 deletions

View File

@ -5090,7 +5090,7 @@ void multiSlsDetector::startReceivingDataThread(){
int* image = new int[nel]; int* image = new int[nel];
int len,idet = 0; int len,idet = 0;
singleframe[ithread]=NULL; singleframe[ithread]=NULL;
int datavalue = 2; /* int datavalue = 2;*/
threadStarted = true; //let calling function know thread started and obtained current threadStarted = true; //let calling function know thread started and obtained current
@ -5107,19 +5107,30 @@ void multiSlsDetector::startReceivingDataThread(){
//scan header------------------------------------------------------------------- //scan header-------------------------------------------------------------------
zmq_msg_init (&message); zmq_msg_init (&message);
//---- with end
len = zmq_msg_recv(&message, zmqsocket, 0);
if (len == -1) {
zmq_msg_close(&message);
cprintf(RED, "%d message null\n",ithread);
continue;
}
//----
/*
while(1){ while(1){
len = zmq_msg_recv(&message, zmqsocket, ZMQ_DONTWAIT); len = zmq_msg_recv(&message, zmqsocket, ZMQ_DONTWAIT);
if(len>0) if(len>0)
break;//also comment out the next recv break;//also comment out the next recv
/*
zmq_poll(&pollitem, 1, 0); //zmq_poll(&pollitem, 1, 0);
//received something, get out //received something, get out
if(pollitem.revents & ZMQ_POLLIN){ //if(pollitem.revents & ZMQ_POLLIN){
pollitem.revents = 0; // pollitem.revents = 0;
break; // break;
} //}uncomment next recv
*/
//received nothing //received nothing
else if (receiverStoppedFlag){ else if (receiverStoppedFlag){
//one more chance if receiver stopped //one more chance if receiver stopped
@ -5139,14 +5150,16 @@ void multiSlsDetector::startReceivingDataThread(){
usleep(4000); usleep(4000);
} }
if(datavalue){ */
/*if(datavalue){
//len = zmq_msg_recv(&message, zmqsocket, 0); //len = zmq_msg_recv(&message, zmqsocket, 0);
if (len == -1) { if (len == -1) {
zmq_msg_close(&message); zmq_msg_close(&message);
cprintf(RED, "%d message null\n",ithread); cprintf(RED, "%d message null\n",ithread);
continue; continue;
} }
*/
// error if you print it // error if you print it
// cout << ithread << " header len:"<<len<<" value:"<< (char*)zmq_msg_data(&message)<<endl; // cout << ithread << " header len:"<<len<<" value:"<< (char*)zmq_msg_data(&message)<<endl;
//cprintf(BLUE,"%d header %d\n",ithread,len); //cprintf(BLUE,"%d header %d\n",ithread,len);
@ -5193,8 +5206,19 @@ void multiSlsDetector::startReceivingDataThread(){
//cprintf(BLUE,"%d data %d\n",ithread,len); //cprintf(BLUE,"%d data %d\n",ithread,len);
//end of socket ("end") //end of socket ("end")
if (len < 1024*256 ) { if (len < 1024*256 ) {
if(!len) cprintf(RED,"Received no data in socket for %d\n", ithread);
//#ifdef VERYVERBOSE
cprintf(RED,"End of socket for %d\n", ithread);
//#endif
zmq_msg_close(&message);
singleframe[ithread] = NULL;
//break;
/*
cprintf(RED,"Received weird packet size %d in socket for %d\n", len, ithread); cprintf(RED,"Received weird packet size %d in socket for %d\n", len, ithread);
memset((char*)(singleframe[ithread]),0xFF,singleDatabytes/numReadoutPerDetector); memset((char*)(singleframe[ithread]),0xFF,singleDatabytes/numReadoutPerDetector);
*/
} }
else{ else{
//actual data //actual data
@ -5209,10 +5233,12 @@ void multiSlsDetector::startReceivingDataThread(){
} }
} }
} }
}
/* }*/
sem_post(&sem_singledone[ithread]);//let multi know is ready sem_post(&sem_singledone[ithread]);//let multi know is ready
zmq_msg_close(&message); // close the message zmq_msg_close(&message); // close the message
datavalue = 2; /* datavalue = 2;*/
} }
cprintf(RED,"%d Closing socket\n",ithread); cprintf(RED,"%d Closing socket\n",ithread);

View File

@ -58,7 +58,7 @@ int slsDetectorUtils::acquire(int delflag){
if(!receiver){ if(!receiver){
setDetectorIndex(-1); setDetectorIndex(-1);
}else{ }else{
receiverStoppedFlag = 0; /*receiverStoppedFlag = 0;*/
//put receiver read frequency to random if no gui //put receiver read frequency to random if no gui
int ret = setReadReceiverFrequency(0); int ret = setReadReceiverFrequency(0);
if(ret>0 && (dataReady == NULL)){ if(ret>0 && (dataReady == NULL)){
@ -151,18 +151,18 @@ int slsDetectorUtils::acquire(int delflag){
stopReceiver(); stopReceiver();
if(setReceiverOnline()==OFFLINE_FLAG){ if(setReceiverOnline()==OFFLINE_FLAG){
*stoppedFlag=1; *stoppedFlag=1;
receiverStoppedFlag = 1; /*receiverStoppedFlag = 1;*/
} }
//multi detectors shouldnt have different receiver read frequencies enabled/disabled //multi detectors shouldnt have different receiver read frequencies enabled/disabled
if(setReadReceiverFrequency(0) < 0){ if(setReadReceiverFrequency(0) < 0){
std::cout << "Error: The receiver read frequency is invalid:" << setReadReceiverFrequency(0) << std::endl; std::cout << "Error: The receiver read frequency is invalid:" << setReadReceiverFrequency(0) << std::endl;
*stoppedFlag=1; *stoppedFlag=1;
receiverStoppedFlag = 1; /*receiverStoppedFlag = 1;*/
} }
if(setReceiverOnline()==OFFLINE_FLAG){ if(setReceiverOnline()==OFFLINE_FLAG){
*stoppedFlag=1; *stoppedFlag=1;
receiverStoppedFlag = 1; /*receiverStoppedFlag = 1;*/
} }
} }
@ -296,7 +296,7 @@ int slsDetectorUtils::acquire(int delflag){
if(setReceiverOnline()==OFFLINE_FLAG){ if(setReceiverOnline()==OFFLINE_FLAG){
stopReceiver(); stopReceiver();
*stoppedFlag=1; *stoppedFlag=1;
receiverStoppedFlag = 1; /*receiverStoppedFlag = 1;*/
pthread_mutex_unlock(&mg); pthread_mutex_unlock(&mg);
break; break;
} }
@ -304,7 +304,7 @@ int slsDetectorUtils::acquire(int delflag){
if(startReceiver() == FAIL) { if(startReceiver() == FAIL) {
stopReceiver(); stopReceiver();
*stoppedFlag=1; *stoppedFlag=1;
receiverStoppedFlag = 1; /*receiverStoppedFlag = 1;*/
pthread_mutex_unlock(&mg); pthread_mutex_unlock(&mg);
break; break;
} }
@ -351,7 +351,7 @@ int slsDetectorUtils::acquire(int delflag){
pthread_mutex_lock(&mg); pthread_mutex_lock(&mg);
//offline //offline
if(setReceiverOnline()==OFFLINE_FLAG){ if(setReceiverOnline()==OFFLINE_FLAG){
receiverStoppedFlag = 1; /* receiverStoppedFlag = 1;*/
if ((getDetectorsType()==GOTTHARD) || (getDetectorsType()==MOENCH) || (getDetectorsType()==JUNGFRAU) ){ if ((getDetectorsType()==GOTTHARD) || (getDetectorsType()==MOENCH) || (getDetectorsType()==JUNGFRAU) ){
if((*correctionMask)&(1<<WRITE_FILE)) if((*correctionMask)&(1<<WRITE_FILE))
closeDataFile(); closeDataFile();
@ -360,7 +360,7 @@ int slsDetectorUtils::acquire(int delflag){
//online //online
else{ else{
stopReceiver(); stopReceiver();
receiverStoppedFlag = 1; /* receiverStoppedFlag = 1;*/
// cout<<"***********receiver stopped"<<endl; // cout<<"***********receiver stopped"<<endl;
} }
pthread_mutex_unlock(&mg); pthread_mutex_unlock(&mg);

View File

@ -837,7 +837,7 @@ virtual int setReceiverFifoDepth(int i = -1)=0;
//protected: //protected:
int *stoppedFlag; int *stoppedFlag;
int receiverStoppedFlag; /* int receiverStoppedFlag;*/
int64_t *timerValue; int64_t *timerValue;
detectorSettings *currentSettings; detectorSettings *currentSettings;