Subversion Repositories f9daq

Compare Revisions

Ignore whitespace Rev 321 → Rev 322

/cvi/apps/RedPitaya/soccli/soccli.c
16,6 → 16,11
 
static int panelHandle;
 
static int outputHandle;
static int settingsHandle;
static int ch0Handle;
static int ch1Handle;
 
static unsigned int chandle = 0;
//static int tfID;
int pfreq;
48,31 → 53,40
 
char filename[0xFF],rootcmd[0xFF];
char fname[0xFF];
char path[0xFF];
char datestr[0xFF];
int type=0;
 
GetCtrlVal(panelHandle,PANEL_EXPORTNAME,fname);
GetCtrlVal(panelHandle,PANEL_FILETYPE,&type);
GetCtrlVal(settingsHandle,SETTINGS_EXPORTNAME,fname);
GetCtrlVal(settingsHandle,SETTINGS_FILETYPE,&type);
sprintf(path, "%s\\Desktop\\data", getenv("USERPROFILE"));
MakeDir (path);
 
FILE *fp;
 
int hour, min, month, day,year;
double sec;
double mtime;
GetCurrentDateTime (&mtime);
GetDateTimeElements (mtime, &hour, &min, &sec, &month, &day, &year);
sprintf(datestr,"%02d_%02d_%02d", hour, min, (int) sec );
switch (type) {
case 0:
case 1:
sprintf(filename,"%s_%d.root",fname, hid);
sprintf(filename,"%s\\%s_%d_%s.dat",path, fname, hid, datestr);
fp =fopen(filename,"wb");
if (fp) {
H1D_Write2File(hid,fp);
fclose(fp);
if (type) {
sprintf(rootcmd ,"thisroot.bat && root.exe H1Dload.cxx(\\\"%s\\\")", filename);
sprintf(rootcmd ,"thisroot.bat && root.exe C:/home/cvi/apps/RedPitaya/soccli/H1Dload.cxx(\\\"%s_%d_%s.dat\\\")", fname, hid, datestr);
LaunchExecutable(rootcmd);
 
}
printf("Histogram %d exported to %s\n", hid, filename);
printf("Histogram %d exported to %s \n%s\n", hid, filename, rootcmd);
}
break;
case 2:
sprintf(filename,"%s_%d.txt",fname, hid);
sprintf(filename,"%s\\%s_%d_%s.txt",path, fname, hid, datestr);
fp=fopen(filename,"w");
if (fp) {
for (int i=0; i<H1D_GetNbinsX(hid); i++) fprintf(fp,"%g\t%g\n", H1D_GetXBinCenter(hid,i), H1D_GetBinContent(hid,i) );
94,8 → 108,11
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "redpitaya_gui.uir", PANEL)) < 0)
return -1;
GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 0, &settingsHandle);
GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 1, &outputHandle);
GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 2, &ch0Handle);
GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 3, &ch1Handle);
 
 
SetStdioPort (CVI_STDIO_WINDOW);
SetSleepPolicy(VAL_SLEEP_MORE);
CmtNewThreadPool (MAX_THREADS, &poolHandle);
122,7 → 139,7
va_start(aptr, format);
ret = vsprintf(strbuf, format, aptr);
va_end(aptr);
SetCtrlVal(panelHandle,PANEL_STDIO,strbuf);
SetCtrlVal(outputHandle,OUTPUT_STDIO,strbuf);
 
if (gLog) {
flog = fopen ("stdio.log", "a");
141,20 → 158,28
switch (event) {
case EVENT_COMMIT:
GetCtrlVal(panel,control, &logy);
switch (control) {
case PANEL_LOGY_1:
cid = PANEL_TDC1;
break;
case PANEL_LOGY_2:
cid = PANEL_ADC1;
break;
case PANEL_LOGY_3:
cid = PANEL_TDC2;
break;
case PANEL_LOGY_4:
cid = PANEL_ADC2;
break;
if (panel== ch0Handle){
switch (control) {
case CH0_LOGY_1:
cid = CH0_TDC1;
break;
case CH0_LOGY_2:
cid = CH0_ADC1;
break;
 
}
}
if (panel == ch1Handle){
switch (control) {
 
case CH1_LOGY_3:
cid = CH1_TDC2;
break;
case CH1_LOGY_4:
cid = CH1_ADC2;
break;
}
}
if (logy) SetCtrlAttribute (panel, cid, ATTR_YMAP_MODE, VAL_LOG);
else SetCtrlAttribute (panel, cid, ATTR_YMAP_MODE, VAL_LINEAR);
break;
167,6 → 192,7
 
float min, max;
int autoscale;
switch (event) {
case EVENT_COMMIT:
GetCtrlVal(panelHandle,PANEL_MINX_5, &min);
186,37 → 212,37
SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_MANUAL, min, max);
 
 
GetCtrlVal(panelHandle,PANEL_MINX_7, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_7, &max);
GetCtrlVal(panelHandle,PANEL_AUTOY_2, &autoscale);
GetCtrlVal(ch0Handle,CH0_MINX_7, &min);
GetCtrlVal(ch0Handle,CH0_MAXX_7, &max);
GetCtrlVal(ch0Handle,CH0_AUTOY_2, &autoscale);
if (autoscale)
SetAxisScalingMode (panelHandle, PANEL_TDC1, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
SetAxisScalingMode (ch0Handle, CH0_TDC1, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
else
SetAxisScalingMode (panelHandle, PANEL_TDC1, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
SetAxisScalingMode (ch0Handle, CH0_TDC1, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
 
GetCtrlVal(panelHandle,PANEL_MINX_8, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_8, &max);
GetCtrlVal(panelHandle,PANEL_AUTOY_3, &autoscale);
GetCtrlVal(ch0Handle,CH0_MINX_8, &min);
GetCtrlVal(ch0Handle,CH0_MAXX_8, &max);
GetCtrlVal(ch0Handle,CH0_AUTOY_3, &autoscale);
if (autoscale)
SetAxisScalingMode (panelHandle, PANEL_ADC1, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
SetAxisScalingMode (ch0Handle, CH0_ADC1, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
else
SetAxisScalingMode (panelHandle, PANEL_ADC1, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
SetAxisScalingMode (ch0Handle, CH0_ADC1, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
 
GetCtrlVal(panelHandle,PANEL_MINX_9, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_9, &max);
GetCtrlVal(panelHandle,PANEL_AUTOY_4, &autoscale);
GetCtrlVal(ch1Handle,CH1_MINX_9, &min);
GetCtrlVal(ch1Handle,CH1_MAXX_9, &max);
GetCtrlVal(ch1Handle,CH1_AUTOY_4, &autoscale);
if (autoscale)
SetAxisScalingMode (panelHandle, PANEL_TDC2, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
SetAxisScalingMode (ch1Handle, CH1_TDC2, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
else
SetAxisScalingMode (panelHandle, PANEL_TDC2, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
SetAxisScalingMode (ch1Handle, CH1_TDC2, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
 
GetCtrlVal(panelHandle,PANEL_MINX_10, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_10, &max);
GetCtrlVal(panelHandle,PANEL_AUTOY_5, &autoscale);
GetCtrlVal(ch1Handle,CH1_MINX_10, &min);
GetCtrlVal(ch1Handle,CH1_MAXX_10, &max);
GetCtrlVal(ch1Handle,CH1_AUTOY_5, &autoscale);
if (autoscale)
SetAxisScalingMode (panelHandle, PANEL_ADC2, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
SetAxisScalingMode (ch1Handle, CH1_ADC2, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max);
else
SetAxisScalingMode (panelHandle, PANEL_ADC2, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
SetAxisScalingMode (ch1Handle, CH1_ADC2, VAL_LEFT_YAXIS, VAL_MANUAL, min, max);
 
 
 
230,51 → 256,51
int nch;
float min,max;
 
GetCtrlVal(panelHandle,PANEL_NCH_1, &nch);
GetCtrlVal(panelHandle,PANEL_MINX_1, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_1, &max);
GetCtrlVal(ch0Handle,CH0_NCH_1, &nch);
GetCtrlVal(ch0Handle,CH0_MINX_1, &min);
GetCtrlVal(ch0Handle,CH0_MAXX_1, &max);
 
H1D_Init(1, "ADC ch 1","Pulse height", nch, min, max );
H1D_SetTitleX(1,"ADC (V)");
H1D_SetTitleY(1,"N");
 
GetCtrlVal(panelHandle,PANEL_NCH_2, &nch);
GetCtrlVal(panelHandle,PANEL_MINX_2, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_2, &max);
GetCtrlVal(ch1Handle,CH1_NCH_2, &nch);
GetCtrlVal(ch1Handle,CH1_MINX_2, &min);
GetCtrlVal(ch1Handle,CH1_MAXX_2, &max);
 
H1D_Init(2, "ADC ch 2","Pulse height", nch, min, max );
H1D_SetTitleX(2,"ADC (V)");
H1D_SetTitleY(2,"N");
 
GetCtrlVal(panelHandle,PANEL_NCH_3, &nch);
GetCtrlVal(panelHandle,PANEL_MINX_3, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_3, &max);
GetCtrlVal(ch0Handle,CH0_NCH_3, &nch);
GetCtrlVal(ch0Handle,CH0_MINX_3, &min);
GetCtrlVal(ch0Handle,CH0_MAXX_3, &max);
 
H1D_Init(3, "TDC ch 1","TDC", nch, min, max );
H1D_SetTitleX(3,"TDC (us)");
H1D_SetTitleY(3,"N");
 
GetCtrlVal(panelHandle,PANEL_NCH_4, &nch);
GetCtrlVal(panelHandle,PANEL_MINX_4, &min);
GetCtrlVal(panelHandle,PANEL_MAXX_4, &max);
GetCtrlVal(ch1Handle,CH1_NCH_4, &nch);
GetCtrlVal(ch1Handle,CH1_MINX_4, &min);
GetCtrlVal(ch1Handle,CH1_MAXX_4, &max);
 
H1D_Init(4, "TDC ch 2","TDC", nch, min, max );
H1D_SetTitleX(4,"TDC (us)");
H1D_SetTitleY(4,"N");
 
SetCtrlAttribute (panelHandle, PANEL_ADC1, ATTR_XNAME, H1D_GetTitleX(1) );
SetCtrlAttribute (panelHandle, PANEL_ADC1, ATTR_YNAME, H1D_GetTitleY(1) );
SetCtrlAttribute (panelHandle, PANEL_ADC2, ATTR_XNAME, H1D_GetTitleX(2) );
SetCtrlAttribute (panelHandle, PANEL_ADC2, ATTR_YNAME, H1D_GetTitleY(2) );
SetCtrlAttribute (ch0Handle, CH0_ADC1, ATTR_XNAME, H1D_GetTitleX(1) );
SetCtrlAttribute (ch0Handle, CH0_ADC1, ATTR_YNAME, H1D_GetTitleY(1) );
SetCtrlAttribute (ch1Handle, CH1_ADC2, ATTR_XNAME, H1D_GetTitleX(2) );
SetCtrlAttribute (ch1Handle, CH1_ADC2, ATTR_YNAME, H1D_GetTitleY(2) );
 
SetCtrlAttribute (panelHandle, PANEL_TDC1, ATTR_XNAME, H1D_GetTitleX(3) );
SetCtrlAttribute (panelHandle, PANEL_TDC1, ATTR_YNAME, H1D_GetTitleY(3) );
SetCtrlAttribute (panelHandle, PANEL_TDC2, ATTR_XNAME, H1D_GetTitleX(4) );
SetCtrlAttribute (panelHandle, PANEL_TDC2, ATTR_YNAME, H1D_GetTitleY(4) );
SetGraphLogYCB( panelHandle, PANEL_LOGY_1, EVENT_COMMIT,NULL,0,0);
SetGraphLogYCB( panelHandle, PANEL_LOGY_2, EVENT_COMMIT,NULL,0,0);
SetGraphLogYCB( panelHandle, PANEL_LOGY_3, EVENT_COMMIT,NULL,0,0);
SetGraphLogYCB( panelHandle, PANEL_LOGY_4, EVENT_COMMIT,NULL,0,0);
SetCtrlAttribute (ch0Handle, CH0_TDC1, ATTR_XNAME, H1D_GetTitleX(3) );
SetCtrlAttribute (ch0Handle, CH0_TDC1, ATTR_YNAME, H1D_GetTitleY(3) );
SetCtrlAttribute (ch1Handle, CH1_TDC2, ATTR_XNAME, H1D_GetTitleX(4) );
SetCtrlAttribute (ch1Handle, CH1_TDC2, ATTR_YNAME, H1D_GetTitleY(4) );
SetGraphLogYCB( ch0Handle, CH0_LOGY_1, EVENT_COMMIT,NULL,0,0);
SetGraphLogYCB( ch0Handle, CH0_LOGY_2, EVENT_COMMIT,NULL,0,0);
SetGraphLogYCB( ch1Handle, CH1_LOGY_3, EVENT_COMMIT,NULL,0,0);
SetGraphLogYCB( ch1Handle, CH1_LOGY_4, EVENT_COMMIT,NULL,0,0);
 
SetGraphPropertiesCB( panelHandle, PANEL, EVENT_COMMIT,NULL,0,0);
 
282,10 → 308,10
SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_XNAME, "t(us)" );
SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_YNAME, "U(V)" );
 
GetCtrlVal(panelHandle,PANEL_TWIN0, &twin0);
GetCtrlVal(panelHandle,PANEL_TWIN1, &twin1);
GetCtrlVal(settingsHandle,SETTINGS_TWIN0, &twin0);
GetCtrlVal(settingsHandle,SETTINGS_TWIN1, &twin1);
GetCtrlVal(panelHandle,PANEL_ADCTYPE, &adctype);
GetCtrlVal(panelHandle,PANEL_ITRGLEVEL , &athreshold);
GetCtrlVal(settingsHandle,SETTINGS_ITRGLEVEL , &athreshold);
return 0;
}
 
304,8 → 330,10
daqtime += fbuf[2];
 
SetCtrlVal(panelHandle, PANEL_CDAQTIME,daqtime);
SetCtrlVal(panelHandle, PANEL_CTIME, Timer() -starttime);
daqtime =0;
float ctime = Timer() -starttime;
SetCtrlVal(panelHandle, PANEL_CTIME, ctime);
if (ctime>0)SetCtrlVal(panelHandle, PANEL_DAQEFF, daqtime/ctime);
//daqtime =0;
while (nr<nb) {
 
int recid = *data++;
335,10 → 363,10
 
plothandle[id] = PlotXY (panelHandle, PANEL_GRAPH, timebins, fdata, nsamples, VAL_FLOAT, VAL_FLOAT, VAL_FAT_LINE, VAL_NO_POINT, VAL_SOLID, 1, col[id]);
 
H1D_Draw(1,panelHandle,PANEL_ADC1,&adcplothandle[0]);
H1D_Draw(2,panelHandle,PANEL_ADC2,&adcplothandle[1]);
H1D_Draw(3,panelHandle,PANEL_TDC1,&tdcplothandle[0]);
H1D_Draw(4,panelHandle,PANEL_TDC2,&tdcplothandle[1]);
H1D_Draw(1, ch0Handle,CH0_ADC1,&adcplothandle[0]);
H1D_Draw(2, ch1Handle,CH1_ADC2,&adcplothandle[1]);
H1D_Draw(3, ch0Handle,CH0_TDC1,&tdcplothandle[0]);
H1D_Draw(4, ch1Handle,CH1_TDC2,&tdcplothandle[1]);
 
if (debug) for (int k=0; k<10; k++) printf("%d %d (%f , %d)\n", id,k, timebins[k],data[k]);
}
433,7 → 461,7
case 1:// read
 
GetCtrlVal(panelHandle,PANEL_CEVE , &event);
GetCtrlVal(panelHandle,PANEL_NTOTAL , &ncalls);
GetCtrlVal(settingsHandle,SETTINGS_NTOTAL , &ncalls);
 
event += analyse(nb,data, evinfo, &ninfo);
if (foutput) {
484,8 → 512,10
int CVICALLBACK StartCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
char ip[0xFF];
char path[0xFF];
int hdr[0xFF];
char filename[0xFF];
char filepath[0xFF];
unsigned short *sbuff = (unsigned short *)&hdr[5] ;
unsigned char *cbuff = (unsigned char *)&sbuff[3] ;
int imask[2];
498,21 → 528,23
unsigned short neve;
int output;
switch (event) {
case EVENT_COMMIT: {
GetCtrlVal(panel,PANEL_IP, ip);
GetCtrlVal(panel,PANEL_TRIGGER, &trigger);
GetCtrlVal(panel,PANEL_SAMPLES, &nsamples);
GetCtrlVal(panel,PANEL_DECIMATION,&decimation);
GetCtrlVal(panel,PANEL_NEVE , &neve);
GetCtrlVal(panel,PANEL_CH0 , &imask[0] );
GetCtrlVal(panel,PANEL_CH1 , &imask[1] );
GetCtrlVal(panel,PANEL_PFREQ , &pfreq);
GetCtrlVal(panel,PANEL_DEBUG , &debug);
GetCtrlVal(panel,PANEL_NBEFORE , &nbefore);
GetCtrlVal(panel,PANEL_ENABLEDOUTPUT, &output);
case EVENT_COMMIT: {
GetCtrlVal(settingsHandle,SETTINGS_IP, ip);
GetCtrlVal(settingsHandle,SETTINGS_TRIGGER, &trigger);
GetCtrlVal(settingsHandle,SETTINGS_SAMPLES, &nsamples);
GetCtrlVal(settingsHandle,SETTINGS_DECIMATION,&decimation);
GetCtrlVal(settingsHandle,SETTINGS_NEVE , &neve);
GetCtrlVal(settingsHandle,SETTINGS_CH0 , &imask[0] );
GetCtrlVal(settingsHandle,SETTINGS_CH1 , &imask[1] );
GetCtrlVal(settingsHandle,SETTINGS_PFREQ , &pfreq);
GetCtrlVal(settingsHandle,SETTINGS_DEBUG , &debug);
GetCtrlVal(settingsHandle,SETTINGS_NBEFORE , &nbefore);
GetCtrlVal(settingsHandle,SETTINGS_ENABLEDOUTPUT, &output);
GetCtrlVal(panel,PANEL_OUTWAVE, &outwaveforms);
GetCtrlVal(panel,PANEL_FILENAME, filename);
 
GetCtrlVal(settingsHandle,SETTINGS_FILENAME, filename);
sprintf(path, "%s\\Desktop\\data", getenv("USERPROFILE"));
MakeDir (path);
sprintf(filepath,"%s\\%s", path, filename);
delay= MINTRGDELAY + nsamples - nbefore + 1;
 
mask = 0;
521,7 → 553,7
}
 
double level =0;
GetCtrlVal(panel,PANEL_TRGLEVEL , &level);
GetCtrlVal(settingsHandle,SETTINGS_TRGLEVEL , &level);
 
 
switch (control) {
539,8 → 571,9
case PANEL_START: {
int state;
GetCtrlVal(panel,PANEL_START, &state);
GetCtrlVal(panel,PANEL_EXCLUDE_1, &excludefirst[0]);
GetCtrlVal(panel,PANEL_EXCLUDE_2, &excludefirst[1]);
GetCtrlVal(ch0Handle,CH0_EXCLUDE_1, &excludefirst[0]);
GetCtrlVal(ch1Handle,CH1_EXCLUDE_2, &excludefirst[1]);
if (state && eventData1==0) {
histoinit();
starttime=Timer();
547,7 → 580,7
daqtime =0;
/* decimation n (=1,8,64...) : frequency = 125/n MHz*/
for (int i=0; i<nsamples; i++) timebins[i]=(i-nbefore)* (float)decimation /125.;
if (output) foutput = fopen(filename, "wb");
if (output) foutput = fopen(filepath, "wb");
printf("decimation %d\n", decimation);
SetCtrlVal(panel,PANEL_CEVE , 0);
ctrl_c=0;
606,20 → 639,31
int hid=0;
switch (event) {
case EVENT_COMMIT:
switch (control) {
case PANEL_EXPORT_1:
hid=1;
break;
case PANEL_EXPORT_2:
hid=2;
break;
case PANEL_EXPORT_3:
hid=3;
break;
case PANEL_EXPORT_4:
hid=4;
break;
if (panel== ch0Handle){
switch (control) {
case CH0_EXPORT_1:
hid=1;
break;
 
case CH0_EXPORT_3:
hid=3;
break;
 
 
}
}
if (panel== ch1Handle){
switch (control) {
 
case CH1_EXPORT_2:
hid=2;
break;
 
case CH1_EXPORT_4:
hid=4;
break;
 
}
}
export_data(hid);
break;