fixed jungfrau gui

This commit is contained in:
Dhanya Maliakal
2016-11-04 13:45:24 +01:00
parent 771e5323b4
commit 25780a2b4f

View File

@ -2231,7 +2231,6 @@ slsDetectorDefs::ROI* multiSlsDetector::getROI(int &n){
double* multiSlsDetector::decodeData(int *datain, double *fdata) { double* multiSlsDetector::decodeData(int *datain, double *fdata) {
double *dataout; double *dataout;
cprintf(GREEN,"numchanensl:%d\n",thisMultiDetector->numberOfChannels);
if (fdata) if (fdata)
dataout=fdata; dataout=fdata;
@ -5167,7 +5166,6 @@ void multiSlsDetector::startReceivingDataThread(){
//scan header------------------------------------------------------------------- //scan header-------------------------------------------------------------------
zmq_msg_init (&message); zmq_msg_init (&message);
cprintf(BLUE,"waiting to listen to header\n");
len = zmq_msg_recv(&message, zmqsocket, 0); len = zmq_msg_recv(&message, zmqsocket, 0);
if (len == -1) { if (len == -1) {
cprintf(BG_RED,"Could not read header for socket %d\n",ithread); cprintf(BG_RED,"Could not read header for socket %d\n",ithread);
@ -5179,7 +5177,7 @@ void multiSlsDetector::startReceivingDataThread(){
// 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);
rapidjson::Document d; rapidjson::Document d;
d.Parse( (char*)zmq_msg_data(&message), zmq_msg_size(&message)); d.Parse( (char*)zmq_msg_data(&message), zmq_msg_size(&message));
#ifdef VERYVERBOSE #ifdef VERYVERBOSE
@ -5201,13 +5199,13 @@ void multiSlsDetector::startReceivingDataThread(){
currentAcquisitionIndex = d["acqIndex"].GetInt(); currentAcquisitionIndex = d["acqIndex"].GetInt();
currentFrameIndex = d["fIndex"].GetInt(); currentFrameIndex = d["fIndex"].GetInt();
currentSubFrameIndex = d["subfnum"].GetInt(); currentSubFrameIndex = d["subfnum"].GetInt();
//currentFileName = d["fname"].GetString(); currentFileName = d["fname"].GetString();
//#ifdef VERYVERBOSE #ifdef VERYVERBOSE
cout << "Acquisition index: " << currentAcquisitionIndex << endl; cout << "Acquisition index: " << currentAcquisitionIndex << endl;
cout << "Frame index: " << currentFrameIndex << endl; cout << "Frame index: " << currentFrameIndex << endl;
cout << "Subframe index: " << currentSubFrameIndex << endl; cout << "Subframe index: " << currentSubFrameIndex << endl;
//cout << "File name: " << currentFileName << endl; cout << "File name: " << currentFileName << endl;
//#endif #endif
if(currentFrameIndex ==-1) cprintf(RED,"multi frame index -1!!\n"); if(currentFrameIndex ==-1) cprintf(RED,"multi frame index -1!!\n");
} }
singleframe[ithread]=image; singleframe[ithread]=image;
@ -5220,7 +5218,7 @@ void multiSlsDetector::startReceivingDataThread(){
zmq_msg_init (&message); zmq_msg_init (&message);
len = zmq_msg_recv(&message, zmqsocket, 0); len = zmq_msg_recv(&message, zmqsocket, 0);
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 < expectedsize ) { if (len < expectedsize ) {
if(len == 3){ if(len == 3){
@ -5235,7 +5233,7 @@ void multiSlsDetector::startReceivingDataThread(){
} }
else{ else{
//actual data //actual data
cprintf(BLUE,"%d actual dataaa\n",ithread); //cprintf(BLUE,"%d actual dataaa\n",ithread);
memcpy((char*)(singleframe[ithread]),(char*)zmq_msg_data(&message),singleDatabytes/numReadoutPerDetector); memcpy((char*)(singleframe[ithread]),(char*)zmq_msg_data(&message),singleDatabytes/numReadoutPerDetector);
@ -5298,13 +5296,11 @@ void multiSlsDetector::readFrameFromReceiver(){
return; return;
} }
int* multiframe=new int[nel]; int* multiframe=new int[nel];
int* p = multiframe;
int idet,offsetY,offsetX; int idet,offsetY,offsetX;
int halfreadoutoffset = (slsmaxX/numReadoutPerDetector); int halfreadoutoffset = (slsmaxX/numReadoutPerDetector);
int nx =getTotalNumberOfChannels(slsDetectorDefs::X); int nx =getTotalNumberOfChannels(slsDetectorDefs::X);
int ny =getTotalNumberOfChannels(slsDetectorDefs::Y); int ny =getTotalNumberOfChannels(slsDetectorDefs::Y);
volatile uint64_t dataThreadMask = 0x0; volatile uint64_t dataThreadMask = 0x0;
for(int i = 0; i < numReadouts; ++i) for(int i = 0; i < numReadouts; ++i)
dataThreadMask|=(1<<i); dataThreadMask|=(1<<i);
@ -5367,8 +5363,7 @@ void multiSlsDetector::readFrameFromReceiver(){
//no interleaving, just add to the end //no interleaving, just add to the end
//numReadout always 1 here //numReadout always 1 here
else{ else{
memcpy(p,multiframe,slsdatabytes); memcpy((char*)multiframe,(char*)singleframe[ireadout],slsdatabytes);
p+=slsdatabytes/sizeof(int);
} }
} }
} }
@ -5381,22 +5376,8 @@ void multiSlsDetector::readFrameFromReceiver(){
//send data to callback //send data to callback
fdata = decodeData(multiframe); fdata = decodeData(multiframe);
if ((fdata) && (dataReady)){ if ((fdata) && (dataReady)){
//cprintf(BLUE,"progress:%d\n",getCurrentProgress());
//cprintf(BLUE,"f:%d\n",currentFrameIndex);
//cprintf(BLUE,"progress:%d\n",getCurrentProgress());
// cprintf(BLUE,"filename:%s\n",currentFileName);
//cprintf(BLUE,"progress:%d\n",getCurrentProgress());
//cprintf(BLUE,"f:%d\n",currentFrameIndex);
currentFileName = "/external_pool/jungfrau_data/softwaretest/dhanya/run_f000000000000_0.raw";
thisData = new detectorData(fdata,NULL,NULL,getCurrentProgress(),currentFileName.c_str(),nx,ny); thisData = new detectorData(fdata,NULL,NULL,getCurrentProgress(),currentFileName.c_str(),nx,ny);
//cprintf(BLUE,"progress:%d\n",getCurrentProgress()); dataReady(thisData, currentFrameIndex, currentSubFrameIndex, pCallbackArg);
// cprintf(BLUE,"f:%d\n",currentFrameIndex);
//cprintf(BLUE,"progress:%d\n",getCurrentProgress());
//cprintf(BLUE,"filenameeeeeeeeeee:%s\n",thisData->fileName);
dataReady(thisData, currentFrameIndex, currentSubFrameIndex, pCallbackArg);//should be fnum and subfnum from json header
delete thisData;
fdata = NULL; fdata = NULL;
cout<<"Send frame #"<< currentFrameIndex << " to gui"<<endl; cout<<"Send frame #"<< currentFrameIndex << " to gui"<<endl;
} }