mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 10:07:59 +02:00
fixed frames from receiver to flip accordingly, also display frame index as not visible from filename
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@345 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
@ -5678,12 +5678,13 @@ int slsDetector::resetFramesCaught(int index){
|
||||
|
||||
|
||||
|
||||
int* slsDetector::readFrameFromReceiver(){
|
||||
int* slsDetector::readFrameFromReceiver(char* fName, int &fIndex){
|
||||
//cout<<"databytes:"<<thisDetector->dataBytes<<" headerlength:"<<HEADERLENGTH<<endl;
|
||||
int fnum=F_READ_FRAME;
|
||||
int nel=(thisDetector->dataBytes+HEADERLENGTH)/sizeof(int);//2572/
|
||||
int* retval=new int[nel];
|
||||
int* origVal=new int[nel];
|
||||
int arg[2];
|
||||
int ret=FAIL;
|
||||
int n;
|
||||
char mess[100]="Nothing";
|
||||
@ -5705,6 +5706,8 @@ int* slsDetector::readFrameFromReceiver(){
|
||||
delete [] retval;
|
||||
return NULL;
|
||||
} else {
|
||||
n=dataSocket->ReceiveDataOnly(fName,MAX_STR_LENGTH);
|
||||
n=dataSocket->ReceiveDataOnly(arg,sizeof(arg));
|
||||
n=dataSocket->ReceiveDataOnly(origVal,thisDetector->dataBytes+HEADERLENGTH);
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Received "<< n << " data bytes" << std::endl;
|
||||
@ -5717,8 +5720,15 @@ int* slsDetector::readFrameFromReceiver(){
|
||||
return NULL;
|
||||
}//worked
|
||||
else{
|
||||
memcpy(retval,((char*) origVal)+2, getDataBytes()/2);
|
||||
memcpy((((char*)retval)+getDataBytes()/2), ((char*) origVal)+8+getDataBytes()/2, getDataBytes()/2);
|
||||
fIndex=arg[0];
|
||||
if(arg[1]){
|
||||
memcpy(retval,((char*) origVal)+2, getDataBytes()/2);
|
||||
memcpy((((char*)retval)+getDataBytes()/2), ((char*) origVal)+8+getDataBytes()/2, getDataBytes()/2);
|
||||
}
|
||||
else{
|
||||
memcpy((((char*)retval)+getDataBytes()/2),((char*) origVal)+2, getDataBytes()/2);
|
||||
memcpy(retval, ((char*) origVal)+8+getDataBytes()/2, getDataBytes()/2);
|
||||
}
|
||||
}
|
||||
}
|
||||
dataSocket->Disconnect();
|
||||
|
@ -1467,9 +1467,12 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
int resetFramesCaught(int index=-1);
|
||||
|
||||
/**
|
||||
* Reads a frame from receiver
|
||||
* @param fName file name of current frame()
|
||||
* @param fIndex current frame index
|
||||
/returns a frame read from recever
|
||||
*/
|
||||
int* readFrameFromReceiver();
|
||||
int* readFrameFromReceiver(char* fName, int &fIndex);
|
||||
|
||||
/** Locks/Unlocks the connection to the receiver
|
||||
/param lock sets (1), usets (0), gets (-1) the lock
|
||||
|
@ -465,9 +465,12 @@ class slsDetectorBase : public virtual slsDetectorDefs {
|
||||
|
||||
|
||||
/**
|
||||
* Reads a frame from receiver
|
||||
* @param fName file name of current frame()
|
||||
* @param fIndex current frame index
|
||||
/returns a frame read from recever
|
||||
*/
|
||||
virtual int* readFrameFromReceiver()=0;
|
||||
virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0;
|
||||
|
||||
/** returns detector type string from detector type index
|
||||
\param t string can be Mythen, Pilatus, Eiger, Gotthard, Agipd, Unknown
|
||||
|
@ -222,7 +222,7 @@ void slsDetectorUsers::finalizeDataset(double *a, double *v, double *e, int &np)
|
||||
|
||||
|
||||
|
||||
void slsDetectorUsers::registerDataCallback(int( *userCallback)(detectorData*, void*), void *pArg){
|
||||
void slsDetectorUsers::registerDataCallback(int( *userCallback)(detectorData*, int, void*), void *pArg){
|
||||
myDetector->registerDataCallback(userCallback,pArg);
|
||||
}
|
||||
|
||||
|
@ -382,7 +382,7 @@ class slsDetectorUsers
|
||||
\param userCallback function for plotting/analyzing the data
|
||||
*/
|
||||
|
||||
void registerDataCallback(int( *userCallback)(detectorData*, void*), void *pArg);
|
||||
void registerDataCallback(int( *userCallback)(detectorData*, int, void*), void *pArg);
|
||||
|
||||
/**
|
||||
@short register callback for accessing raw data - if the rawDataCallback is registered, no filewriting/postprocessing will be carried on automatically by the software - the raw data are deleted by the software
|
||||
|
@ -629,9 +629,12 @@ virtual int getCurrentFrameIndex()=0;
|
||||
virtual int resetFramesCaught(int index=-1)=0;
|
||||
|
||||
/**
|
||||
* Reads a frame from receiver
|
||||
* @param fName file name of current frame()
|
||||
* @param fIndex current frame index
|
||||
/returns a frame read from recever
|
||||
*/
|
||||
virtual int* readFrameFromReceiver()=0;
|
||||
virtual int* readFrameFromReceiver(char* fName, int &fIndex)=0;
|
||||
|
||||
|
||||
protected:
|
||||
|
Reference in New Issue
Block a user