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; |