mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 18:17: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:
@ -50,7 +50,7 @@ int sockfd;
|
||||
FILE *sfilefd;
|
||||
|
||||
|
||||
|
||||
char savefilename[128];
|
||||
char filePath[MAX_STR_LENGTH]="";
|
||||
char fileName[MAX_STR_LENGTH]="run";
|
||||
int fileIndex=0;
|
||||
@ -140,7 +140,9 @@ int setFileIndex(int index){
|
||||
|
||||
|
||||
|
||||
|
||||
int getStartFrameIndex(){
|
||||
return startFrameIndex;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -192,8 +194,6 @@ void* startListening(void *arg){
|
||||
sd = -1;
|
||||
int rc1, rc2, rc;
|
||||
int currframenum, prevframenum;
|
||||
// char buffer2[BUFFER_LENGTH];
|
||||
char savefilename[128];
|
||||
struct sockaddr_in serveraddr;
|
||||
struct sockaddr_in clientaddr;
|
||||
|
||||
@ -212,9 +212,9 @@ void* startListening(void *arg){
|
||||
|
||||
//create file name
|
||||
if(!frameIndexNeeded)
|
||||
sprintf(savefilename, "%s/%s_%d.dat", filePath,fileName,fileIndex);
|
||||
sprintf(savefilename, "%s/%s_%d.raw", filePath,fileName,fileIndex);
|
||||
else
|
||||
sprintf(savefilename, "%s/%s_f%012d_%d.dat", filePath,fileName,framesCaught,fileIndex);
|
||||
sprintf(savefilename, "%s/%s_f%012d_%d.raw", filePath,fileName,framesCaught,fileIndex);
|
||||
|
||||
/***********************************************************************/
|
||||
/* A do/while(FALSE) loop is used to make error cleanup easier. The */
|
||||
@ -270,9 +270,9 @@ void* startListening(void *arg){
|
||||
getFrameIndex();
|
||||
//create file name
|
||||
if(!frameIndexNeeded)
|
||||
sprintf(savefilename, "%s/%s_%d.dat", filePath,fileName,fileIndex);
|
||||
sprintf(savefilename, "%s/%s_%d.raw", filePath,fileName,fileIndex);
|
||||
else
|
||||
sprintf(savefilename, "%s/%s_f%012d_%d.dat", filePath,fileName,framesCaught,fileIndex);
|
||||
sprintf(savefilename, "%s/%s_f%012d_%d.raw", filePath,fileName,framesCaught,fileIndex);
|
||||
|
||||
printf("saving to %s\t\tpacket loss %f %%\t\tframenum %d\n", savefilename,((currframenum-prevframenum-(2*framesInFile))/(double)(2*framesInFile))*100.000,currframenum);
|
||||
sfilefd = fopen((const char *) (savefilename), "w");
|
||||
@ -390,15 +390,8 @@ int stopReceiver(){
|
||||
}
|
||||
|
||||
|
||||
char* readFrame(){
|
||||
int i;
|
||||
for(i=0;i<20;i++){
|
||||
if ((((int)*((int*)buffer))%2)!=0)
|
||||
break;
|
||||
else
|
||||
usleep(20000);
|
||||
}
|
||||
//printf("freamenum%d\n",*((int*) sendbuffer));
|
||||
char* readFrame(char* fName){
|
||||
strcpy(fName,savefilename);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,9 @@ void* startListening(void *arg);
|
||||
int startReceiver();
|
||||
int stopReceiver();
|
||||
|
||||
char* readFrame();
|
||||
char* readFrame(char *fName);
|
||||
|
||||
int getStartFrameIndex();
|
||||
|
||||
//int setUDPPortNumber(int p=-1); //sets/gets port number to listen to for data from the detector
|
||||
//int setTCPPortNumber(int p=-1); //sets/get port number for communication to client
|
||||
|
@ -527,32 +527,82 @@ int reset_frames_caught(int file_des) {
|
||||
|
||||
int read_frame(int file_des) {
|
||||
int ret=OK;
|
||||
int n=0;
|
||||
int n=0,i,startIndex=-1;
|
||||
|
||||
char* retval=NULL;
|
||||
char buffer[1286*2];
|
||||
char fName[MAX_STR_LENGTH];
|
||||
int arg[2];
|
||||
arg[1]=1;//do not flip
|
||||
int index=-1,index2=-1,fIndex=-1;;
|
||||
|
||||
|
||||
strcpy(mess,"Could not read frame\n");
|
||||
|
||||
|
||||
/* execute action if the arguments correctly arrived*/
|
||||
#ifdef SLS_RECEIVER_FUNCTION_LIST
|
||||
retval=readFrame();
|
||||
#endif
|
||||
//wait till you get first frame 1. to get index(from startindex 2. filename corresponds to buffer value
|
||||
if(startIndex==-1){
|
||||
ret=FAIL;
|
||||
strcpy(mess,"did not start index\n");
|
||||
for(i=0;i<10;i++){
|
||||
startIndex=getStartFrameIndex();
|
||||
if(startIndex==-1)
|
||||
usleep(1000000);
|
||||
else {
|
||||
ret=OK;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//got atleast first frame, read buffer
|
||||
if(ret==OK){
|
||||
int count=0;
|
||||
do{
|
||||
if(count>0){ printf("\nunmatching: index:%d index2:%d\n",index,index2);fflush(stdout);}
|
||||
retval=readFrame(fName);
|
||||
index=(int)(*((int*)retval));
|
||||
char* retval2= retval+1286;
|
||||
index2= (int)(*((int*)retval2));
|
||||
count++;
|
||||
|
||||
}while((index%2)==(index2%2));
|
||||
|
||||
fIndex=((int)(*((int*)retval)) - startIndex)/2;
|
||||
arg[0]=fIndex;
|
||||
arg[1]=(index%2);
|
||||
|
||||
#ifdef VERBOSE
|
||||
printf("\nstartIndex:%d\n",startIndex);
|
||||
printf("fName:%s\n",fName);
|
||||
if((index%2)==0){
|
||||
printf("\nEven Index, must flip:%d\n",index);
|
||||
fflush(stdout);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
if(ret==OK && differentClients){
|
||||
printf("Force update\n");
|
||||
ret=FORCE_UPDATE;
|
||||
}
|
||||
if(getReceiverStatus==IDLE){
|
||||
/*if(getReceiverStatus()==IDLE){
|
||||
ret=FAIL;
|
||||
printf("*************STOPPPED***\n");
|
||||
}
|
||||
}*/
|
||||
/* send answer */
|
||||
n = sendDataOnly(file_des,&ret,sizeof(ret));
|
||||
if(ret==FAIL)
|
||||
n = sendDataOnly(file_des,mess,sizeof(mess));
|
||||
n = sendDataOnly(file_des,retval,sizeof(buffer));
|
||||
else{
|
||||
n = sendDataOnly(file_des,fName,MAX_STR_LENGTH);
|
||||
n = sendDataOnly(file_des,arg,sizeof(arg));
|
||||
n = sendDataOnly(file_des,retval,sizeof(buffer));
|
||||
}
|
||||
/*return ok/fail*/
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user