Rev 263 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 263 | Rev 322 | ||
---|---|---|---|
Line 13... | Line 13... | ||
13 | #define MAXSAMPLES 16384 |
13 | #define MAXSAMPLES 16384 |
14 | #define MINTRGDELAY -8192 |
14 | #define MINTRGDELAY -8192 |
15 | 15 | ||
16 | 16 | ||
17 | static int panelHandle; |
17 | static int panelHandle; |
- | 18 | ||
- | 19 | static int outputHandle; |
|
- | 20 | static int settingsHandle; |
|
- | 21 | static int ch0Handle; |
|
- | 22 | static int ch1Handle; |
|
18 | 23 | ||
19 | static unsigned int chandle = 0; |
24 | static unsigned int chandle = 0; |
20 | //static int tfID; |
25 | //static int tfID; |
21 | int pfreq; |
26 | int pfreq; |
22 | static int plothandle[2]= {0,0}; |
27 | static int plothandle[2]= {0,0}; |
Line 30... | Line 35... | ||
30 | int adctype; |
35 | int adctype; |
31 | float athreshold, twin0,twin1; |
36 | float athreshold, twin0,twin1; |
32 | float timebins[0XFFFF]; |
37 | float timebins[0XFFFF]; |
33 | float daqtime; |
38 | float daqtime; |
34 | double starttime; |
39 | double starttime; |
35 | 40 | ||
36 | FILE *foutput; |
41 | FILE *foutput; |
37 | int outwaveforms=0; |
42 | int outwaveforms=0; |
38 | 43 | ||
39 | static CmtThreadPoolHandle poolHandle = 0; |
44 | static CmtThreadPoolHandle poolHandle = 0; |
40 | int ctrl_c=0; |
45 | int ctrl_c=0; |
41 | 46 | ||
42 | 47 | ||
43 | int CVICALLBACK SocketCB (unsigned handle, int xType, int errCode, void *callbackData); |
48 | int CVICALLBACK SocketCB (unsigned handle, int xType, int errCode, void *callbackData); |
44 | 49 | ||
45 | 50 | ||
46 | 51 | ||
47 | static int export_data (int hid) { |
52 | static int export_data (int hid) { |
48 | 53 | ||
49 | char filename[0xFF],rootcmd[0xFF]; |
54 | char filename[0xFF],rootcmd[0xFF]; |
50 | char fname[0xFF]; |
55 | char fname[0xFF]; |
- | 56 | char path[0xFF]; |
|
- | 57 | char datestr[0xFF]; |
|
51 | int type=0; |
58 | int type=0; |
52 | 59 | ||
53 | GetCtrlVal( |
60 | GetCtrlVal(settingsHandle,SETTINGS_EXPORTNAME,fname); |
54 | GetCtrlVal( |
61 | GetCtrlVal(settingsHandle,SETTINGS_FILETYPE,&type); |
- | 62 | sprintf(path, "%s\\Desktop\\data", getenv("USERPROFILE")); |
|
- | 63 | MakeDir (path); |
|
55 | 64 | ||
56 | FILE *fp; |
65 | FILE *fp; |
- | 66 | int hour, min, month, day,year; |
|
57 | 67 | double sec; |
|
- | 68 | double mtime; |
|
- | 69 | GetCurrentDateTime (&mtime); |
|
- | 70 | GetDateTimeElements (mtime, &hour, &min, &sec, &month, &day, &year); |
|
- | 71 | sprintf(datestr,"%02d_%02d_%02d", hour, min, (int) sec ); |
|
58 | switch (type) { |
72 | switch (type) { |
59 | case 0: |
73 | case 0: |
60 | case 1: |
74 | case 1: |
61 | sprintf(filename," |
75 | sprintf(filename,"%s\\%s_%d_%s.dat",path, fname, hid, datestr); |
62 | fp =fopen(filename,"wb"); |
76 | fp =fopen(filename,"wb"); |
63 | if (fp) { |
77 | if (fp) { |
64 | H1D_Write2File(hid,fp); |
78 | H1D_Write2File(hid,fp); |
65 | fclose(fp); |
79 | fclose(fp); |
66 | if (type) { |
80 | if (type) { |
67 | sprintf(rootcmd ,"thisroot.bat && root.exe H1Dload.cxx(\\\" |
81 | sprintf(rootcmd ,"thisroot.bat && root.exe C:/home/cvi/apps/RedPitaya/soccli/H1Dload.cxx(\\\"%s_%d_%s.dat\\\")", fname, hid, datestr); |
68 | LaunchExecutable(rootcmd); |
82 | LaunchExecutable(rootcmd); |
69 | 83 | ||
70 | } |
84 | } |
71 | printf("Histogram %d exported to %s\n" |
85 | printf("Histogram %d exported to %s \n%s\n", hid, filename, rootcmd); |
72 | } |
86 | } |
73 | break; |
87 | break; |
74 | case 2: |
88 | case 2: |
75 | sprintf(filename," |
89 | sprintf(filename,"%s\\%s_%d_%s.txt",path, fname, hid, datestr); |
76 | fp=fopen(filename,"w"); |
90 | fp=fopen(filename,"w"); |
77 | if (fp) { |
91 | if (fp) { |
78 | for (int i=0; i<H1D_GetNbinsX(hid); i++) fprintf(fp,"%g\t%g\n", H1D_GetXBinCenter(hid,i), H1D_GetBinContent(hid,i) ); |
92 | for (int i=0; i<H1D_GetNbinsX(hid); i++) fprintf(fp,"%g\t%g\n", H1D_GetXBinCenter(hid,i), H1D_GetBinContent(hid,i) ); |
79 | fclose(fp); |
93 | fclose(fp); |
80 | printf("Histogram %d exported to %s\n", hid, filename); |
94 | printf("Histogram %d exported to %s\n", hid, filename); |
Line 92... | Line 106... | ||
92 | int main (int argc, char *argv[]) { |
106 | int main (int argc, char *argv[]) { |
93 | if (InitCVIRTE (0, argv, 0) == 0) |
107 | if (InitCVIRTE (0, argv, 0) == 0) |
94 | return -1; /* out of memory */ |
108 | return -1; /* out of memory */ |
95 | if ((panelHandle = LoadPanel (0, "redpitaya_gui.uir", PANEL)) < 0) |
109 | if ((panelHandle = LoadPanel (0, "redpitaya_gui.uir", PANEL)) < 0) |
96 | return -1; |
110 | return -1; |
97 | - | ||
- | 111 | GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 0, &settingsHandle); |
|
- | 112 | GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 1, &outputHandle); |
|
- | 113 | GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 2, &ch0Handle); |
|
- | 114 | GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 3, &ch1Handle); |
|
98 | 115 | ||
99 | SetStdioPort (CVI_STDIO_WINDOW); |
116 | SetStdioPort (CVI_STDIO_WINDOW); |
100 | SetSleepPolicy(VAL_SLEEP_MORE); |
117 | SetSleepPolicy(VAL_SLEEP_MORE); |
101 | CmtNewThreadPool (MAX_THREADS, &poolHandle); |
118 | CmtNewThreadPool (MAX_THREADS, &poolHandle); |
102 | 119 | ||
Line 105... | Line 122... | ||
105 | DisplayPanel (panelHandle); |
122 | DisplayPanel (panelHandle); |
106 | RunUserInterface (); |
123 | RunUserInterface (); |
107 | DiscardPanel (panelHandle); |
124 | DiscardPanel (panelHandle); |
108 | CmtDiscardThreadPool (poolHandle); |
125 | CmtDiscardThreadPool (poolHandle); |
109 | if (chandle!=0) DisconnectFromTCPServer (chandle); |
126 | if (chandle!=0) DisconnectFromTCPServer (chandle); |
110 | return 0; |
127 | return 0; |
111 | } |
128 | } |
112 | 129 | ||
113 | char strbuf[0xFF]; |
130 | char strbuf[0xFF]; |
114 | 131 | ||
115 | int gLog=0; |
132 | int gLog=0; |
116 | 133 | ||
Line 120... | Line 137... | ||
120 | FILE *flog; |
137 | FILE *flog; |
121 | 138 | ||
122 | va_start(aptr, format); |
139 | va_start(aptr, format); |
123 | ret = vsprintf(strbuf, format, aptr); |
140 | ret = vsprintf(strbuf, format, aptr); |
124 | va_end(aptr); |
141 | va_end(aptr); |
125 | SetCtrlVal( |
142 | SetCtrlVal(outputHandle,OUTPUT_STDIO,strbuf); |
126 | 143 | ||
127 | if (gLog) { |
144 | if (gLog) { |
128 | flog = fopen ("stdio.log", "a"); |
145 | flog = fopen ("stdio.log", "a"); |
129 | fprintf (flog, "%s", strbuf); |
146 | fprintf (flog, "%s", strbuf); |
130 | fclose (flog); |
147 | fclose (flog); |
Line 133... | Line 150... | ||
133 | } |
150 | } |
134 | 151 | ||
135 | 152 | ||
136 | int CVICALLBACK SetGraphLogYCB (int panel, int control, int event, |
153 | int CVICALLBACK SetGraphLogYCB (int panel, int control, int event, |
137 | void *callbackData, int eventData1, int eventData2) { |
154 | void *callbackData, int eventData1, int eventData2) { |
138 | 155 | ||
139 | int cid=0; |
156 | int cid=0; |
140 | int logy=0; |
157 | int logy=0; |
141 | switch (event) { |
158 | switch (event) { |
142 | case EVENT_COMMIT: |
159 | case EVENT_COMMIT: |
143 | GetCtrlVal(panel,control, &logy); |
160 | GetCtrlVal(panel,control, &logy); |
- | 161 | if (panel== ch0Handle){ |
|
144 | switch (control) { |
162 | switch (control) { |
145 | case |
163 | case CH0_LOGY_1: |
146 | cid = |
164 | cid = CH0_TDC1; |
147 | break; |
165 | break; |
148 | case |
166 | case CH0_LOGY_2: |
149 | cid = |
167 | cid = CH0_ADC1; |
150 | break; |
168 | break; |
- | 169 | ||
- | 170 | } |
|
- | 171 | } |
|
- | 172 | if (panel == ch1Handle){ |
|
- | 173 | switch (control) { |
|
- | 174 | ||
151 | case |
175 | case CH1_LOGY_3: |
152 | cid = |
176 | cid = CH1_TDC2; |
153 | break; |
177 | break; |
154 | case |
178 | case CH1_LOGY_4: |
155 | cid = |
179 | cid = CH1_ADC2; |
156 | break; |
180 | break; |
- | 181 | } |
|
157 | } |
182 | } |
158 | if (logy) SetCtrlAttribute (panel, cid, ATTR_YMAP_MODE, VAL_LOG); |
183 | if (logy) SetCtrlAttribute (panel, cid, ATTR_YMAP_MODE, VAL_LOG); |
159 | else SetCtrlAttribute (panel, cid, ATTR_YMAP_MODE, VAL_LINEAR); |
184 | else SetCtrlAttribute (panel, cid, ATTR_YMAP_MODE, VAL_LINEAR); |
160 | break; |
185 | break; |
161 | } |
186 | } |
162 | return 0; |
187 | return 0; |
163 | } |
188 | } |
164 | 189 | ||
165 | int CVICALLBACK SetGraphPropertiesCB (int panel, int control, int event, |
190 | int CVICALLBACK SetGraphPropertiesCB (int panel, int control, int event, |
166 | void *callbackData, int eventData1, int eventData2) { |
191 | void *callbackData, int eventData1, int eventData2) { |
167 | 192 | ||
168 | float min, max; |
193 | float min, max; |
169 | int autoscale; |
194 | int autoscale; |
- | 195 | ||
170 | switch (event) { |
196 | switch (event) { |
171 | case EVENT_COMMIT: |
197 | case EVENT_COMMIT: |
172 | GetCtrlVal(panelHandle,PANEL_MINX_5, &min); |
198 | GetCtrlVal(panelHandle,PANEL_MINX_5, &min); |
173 | GetCtrlVal(panelHandle,PANEL_MAXX_5, &max); |
199 | GetCtrlVal(panelHandle,PANEL_MAXX_5, &max); |
174 | GetCtrlVal(panelHandle,PANEL_AUTOY, &autoscale); |
200 | GetCtrlVal(panelHandle,PANEL_AUTOY, &autoscale); |
Line 184... | Line 210... | ||
184 | SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_AUTOSCALE, min, max); |
210 | SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_AUTOSCALE, min, max); |
185 | else |
211 | else |
186 | SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_MANUAL, min, max); |
212 | SetAxisScalingMode (panelHandle, PANEL_GRAPH, VAL_BOTTOM_XAXIS, VAL_MANUAL, min, max); |
187 | 213 | ||
188 | 214 | ||
189 | GetCtrlVal( |
215 | GetCtrlVal(ch0Handle,CH0_MINX_7, &min); |
190 | GetCtrlVal( |
216 | GetCtrlVal(ch0Handle,CH0_MAXX_7, &max); |
191 | GetCtrlVal( |
217 | GetCtrlVal(ch0Handle,CH0_AUTOY_2, &autoscale); |
192 | if (autoscale) |
218 | if (autoscale) |
193 | SetAxisScalingMode ( |
219 | SetAxisScalingMode (ch0Handle, CH0_TDC1, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max); |
194 | else |
220 | else |
195 | SetAxisScalingMode ( |
221 | SetAxisScalingMode (ch0Handle, CH0_TDC1, VAL_LEFT_YAXIS, VAL_MANUAL, min, max); |
196 | 222 | ||
197 | GetCtrlVal( |
223 | GetCtrlVal(ch0Handle,CH0_MINX_8, &min); |
198 | GetCtrlVal( |
224 | GetCtrlVal(ch0Handle,CH0_MAXX_8, &max); |
199 | GetCtrlVal( |
225 | GetCtrlVal(ch0Handle,CH0_AUTOY_3, &autoscale); |
200 | if (autoscale) |
226 | if (autoscale) |
201 | SetAxisScalingMode ( |
227 | SetAxisScalingMode (ch0Handle, CH0_ADC1, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max); |
202 | else |
228 | else |
203 | SetAxisScalingMode ( |
229 | SetAxisScalingMode (ch0Handle, CH0_ADC1, VAL_LEFT_YAXIS, VAL_MANUAL, min, max); |
204 | 230 | ||
205 | GetCtrlVal( |
231 | GetCtrlVal(ch1Handle,CH1_MINX_9, &min); |
206 | GetCtrlVal( |
232 | GetCtrlVal(ch1Handle,CH1_MAXX_9, &max); |
207 | GetCtrlVal( |
233 | GetCtrlVal(ch1Handle,CH1_AUTOY_4, &autoscale); |
208 | if (autoscale) |
234 | if (autoscale) |
209 | SetAxisScalingMode ( |
235 | SetAxisScalingMode (ch1Handle, CH1_TDC2, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max); |
210 | else |
236 | else |
211 | SetAxisScalingMode ( |
237 | SetAxisScalingMode (ch1Handle, CH1_TDC2, VAL_LEFT_YAXIS, VAL_MANUAL, min, max); |
212 | 238 | ||
213 | GetCtrlVal( |
239 | GetCtrlVal(ch1Handle,CH1_MINX_10, &min); |
214 | GetCtrlVal( |
240 | GetCtrlVal(ch1Handle,CH1_MAXX_10, &max); |
215 | GetCtrlVal( |
241 | GetCtrlVal(ch1Handle,CH1_AUTOY_5, &autoscale); |
216 | if (autoscale) |
242 | if (autoscale) |
217 | SetAxisScalingMode ( |
243 | SetAxisScalingMode (ch1Handle, CH1_ADC2, VAL_LEFT_YAXIS, VAL_AUTOSCALE, min, max); |
218 | else |
244 | else |
219 | SetAxisScalingMode ( |
245 | SetAxisScalingMode (ch1Handle, CH1_ADC2, VAL_LEFT_YAXIS, VAL_MANUAL, min, max); |
220 | 246 | ||
221 | 247 | ||
222 | 248 | ||
223 | break; |
249 | break; |
224 | } |
250 | } |
Line 228... | Line 254... | ||
228 | 254 | ||
229 | int histoinit() { |
255 | int histoinit() { |
230 | int nch; |
256 | int nch; |
231 | float min,max; |
257 | float min,max; |
232 | 258 | ||
233 | GetCtrlVal( |
259 | GetCtrlVal(ch0Handle,CH0_NCH_1, &nch); |
234 | GetCtrlVal( |
260 | GetCtrlVal(ch0Handle,CH0_MINX_1, &min); |
235 | GetCtrlVal( |
261 | GetCtrlVal(ch0Handle,CH0_MAXX_1, &max); |
236 | 262 | ||
237 | H1D_Init(1, "ADC ch 1","Pulse height", nch, min, max ); |
263 | H1D_Init(1, "ADC ch 1","Pulse height", nch, min, max ); |
238 | H1D_SetTitleX(1,"ADC (V)"); |
264 | H1D_SetTitleX(1,"ADC (V)"); |
239 | H1D_SetTitleY(1,"N"); |
265 | H1D_SetTitleY(1,"N"); |
240 | 266 | ||
241 | GetCtrlVal( |
267 | GetCtrlVal(ch1Handle,CH1_NCH_2, &nch); |
242 | GetCtrlVal( |
268 | GetCtrlVal(ch1Handle,CH1_MINX_2, &min); |
243 | GetCtrlVal( |
269 | GetCtrlVal(ch1Handle,CH1_MAXX_2, &max); |
244 | 270 | ||
245 | H1D_Init(2, "ADC ch 2","Pulse height", nch, min, max ); |
271 | H1D_Init(2, "ADC ch 2","Pulse height", nch, min, max ); |
246 | H1D_SetTitleX(2,"ADC (V)"); |
272 | H1D_SetTitleX(2,"ADC (V)"); |
247 | H1D_SetTitleY(2,"N"); |
273 | H1D_SetTitleY(2,"N"); |
248 | 274 | ||
249 | GetCtrlVal( |
275 | GetCtrlVal(ch0Handle,CH0_NCH_3, &nch); |
250 | GetCtrlVal( |
276 | GetCtrlVal(ch0Handle,CH0_MINX_3, &min); |
251 | GetCtrlVal( |
277 | GetCtrlVal(ch0Handle,CH0_MAXX_3, &max); |
252 | 278 | ||
253 | H1D_Init(3, "TDC ch 1","TDC", nch, min, max ); |
279 | H1D_Init(3, "TDC ch 1","TDC", nch, min, max ); |
254 | H1D_SetTitleX(3,"TDC (us)"); |
280 | H1D_SetTitleX(3,"TDC (us)"); |
255 | H1D_SetTitleY(3,"N"); |
281 | H1D_SetTitleY(3,"N"); |
256 | 282 | ||
257 | GetCtrlVal( |
283 | GetCtrlVal(ch1Handle,CH1_NCH_4, &nch); |
258 | GetCtrlVal( |
284 | GetCtrlVal(ch1Handle,CH1_MINX_4, &min); |
259 | GetCtrlVal( |
285 | GetCtrlVal(ch1Handle,CH1_MAXX_4, &max); |
260 | 286 | ||
261 | H1D_Init(4, "TDC ch 2","TDC", nch, min, max ); |
287 | H1D_Init(4, "TDC ch 2","TDC", nch, min, max ); |
262 | H1D_SetTitleX(4,"TDC (us)"); |
288 | H1D_SetTitleX(4,"TDC (us)"); |
263 | H1D_SetTitleY(4,"N"); |
289 | H1D_SetTitleY(4,"N"); |
264 | 290 | ||
265 | SetCtrlAttribute ( |
291 | SetCtrlAttribute (ch0Handle, CH0_ADC1, ATTR_XNAME, H1D_GetTitleX(1) ); |
266 | SetCtrlAttribute ( |
292 | SetCtrlAttribute (ch0Handle, CH0_ADC1, ATTR_YNAME, H1D_GetTitleY(1) ); |
267 | SetCtrlAttribute ( |
293 | SetCtrlAttribute (ch1Handle, CH1_ADC2, ATTR_XNAME, H1D_GetTitleX(2) ); |
268 | SetCtrlAttribute ( |
294 | SetCtrlAttribute (ch1Handle, CH1_ADC2, ATTR_YNAME, H1D_GetTitleY(2) ); |
269 | 295 | ||
270 | SetCtrlAttribute ( |
296 | SetCtrlAttribute (ch0Handle, CH0_TDC1, ATTR_XNAME, H1D_GetTitleX(3) ); |
271 | SetCtrlAttribute ( |
297 | SetCtrlAttribute (ch0Handle, CH0_TDC1, ATTR_YNAME, H1D_GetTitleY(3) ); |
272 | SetCtrlAttribute ( |
298 | SetCtrlAttribute (ch1Handle, CH1_TDC2, ATTR_XNAME, H1D_GetTitleX(4) ); |
273 | SetCtrlAttribute ( |
299 | SetCtrlAttribute (ch1Handle, CH1_TDC2, ATTR_YNAME, H1D_GetTitleY(4) ); |
274 | SetGraphLogYCB( |
300 | SetGraphLogYCB( ch0Handle, CH0_LOGY_1, EVENT_COMMIT,NULL,0,0); |
275 | SetGraphLogYCB( |
301 | SetGraphLogYCB( ch0Handle, CH0_LOGY_2, EVENT_COMMIT,NULL,0,0); |
276 | SetGraphLogYCB( |
302 | SetGraphLogYCB( ch1Handle, CH1_LOGY_3, EVENT_COMMIT,NULL,0,0); |
277 | SetGraphLogYCB( |
303 | SetGraphLogYCB( ch1Handle, CH1_LOGY_4, EVENT_COMMIT,NULL,0,0); |
278 | 304 | ||
279 | SetGraphPropertiesCB( panelHandle, PANEL, EVENT_COMMIT,NULL,0,0); |
305 | SetGraphPropertiesCB( panelHandle, PANEL, EVENT_COMMIT,NULL,0,0); |
280 | 306 | ||
281 | SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_LABEL_TEXT , "sampling adc data"); |
307 | SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_LABEL_TEXT , "sampling adc data"); |
282 | SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_XNAME, "t(us)" ); |
308 | SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_XNAME, "t(us)" ); |
283 | SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_YNAME, "U(V)" ); |
309 | SetCtrlAttribute (panelHandle, PANEL_GRAPH, ATTR_YNAME, "U(V)" ); |
284 | 310 | ||
285 | GetCtrlVal( |
311 | GetCtrlVal(settingsHandle,SETTINGS_TWIN0, &twin0); |
286 | GetCtrlVal( |
312 | GetCtrlVal(settingsHandle,SETTINGS_TWIN1, &twin1); |
287 | GetCtrlVal(panelHandle,PANEL_ADCTYPE, &adctype); |
313 | GetCtrlVal(panelHandle,PANEL_ADCTYPE, &adctype); |
288 | GetCtrlVal( |
314 | GetCtrlVal(settingsHandle,SETTINGS_ITRGLEVEL , &athreshold); |
289 | return 0; |
315 | return 0; |
290 | } |
316 | } |
291 | 317 | ||
292 | int analyse(int nb, unsigned char *cdata, int *info, int *ninfo) { |
318 | int analyse(int nb, unsigned char *cdata, int *info, int *ninfo) { |
293 | 319 | ||
Line 302... | Line 328... | ||
302 | *ninfo = 0; |
328 | *ninfo = 0; |
303 | printf("Run HDR LEN=%d NEVE=%d dt=%f adc=%f qdc=%f\n", ibuf[0],ibuf[1],fbuf[2],adc,qdc); |
329 | printf("Run HDR LEN=%d NEVE=%d dt=%f adc=%f qdc=%f\n", ibuf[0],ibuf[1],fbuf[2],adc,qdc); |
304 | daqtime += fbuf[2]; |
330 | daqtime += fbuf[2]; |
305 | 331 | ||
306 | SetCtrlVal(panelHandle, PANEL_CDAQTIME,daqtime); |
332 | SetCtrlVal(panelHandle, PANEL_CDAQTIME,daqtime); |
- | 333 | float ctime = Timer() -starttime; |
|
307 | SetCtrlVal(panelHandle, PANEL_CTIME, |
334 | SetCtrlVal(panelHandle, PANEL_CTIME, ctime); |
- | 335 | if (ctime>0)SetCtrlVal(panelHandle, PANEL_DAQEFF, daqtime/ctime); |
|
308 | daqtime |
336 | //daqtime =0; |
309 | while (nr<nb) { |
337 | while (nr<nb) { |
310 | 338 | ||
311 | int recid = *data++; |
339 | int recid = *data++; |
312 | int chmask = *data++; |
340 | int chmask = *data++; |
313 | nr +=8; |
341 | nr +=8; |
Line 332... | Line 360... | ||
332 | if ( nsamples>0 && neve % pfreq == 0) { |
360 | if ( nsamples>0 && neve % pfreq == 0) { |
333 | const int col[4]= {VAL_RED,VAL_GREEN,VAL_BLUE,VAL_WHITE}; |
361 | const int col[4]= {VAL_RED,VAL_GREEN,VAL_BLUE,VAL_WHITE}; |
334 | if (plothandle[id]) DeleteGraphPlot (panelHandle, PANEL_GRAPH, plothandle[id], VAL_IMMEDIATE_DRAW); |
362 | if (plothandle[id]) DeleteGraphPlot (panelHandle, PANEL_GRAPH, plothandle[id], VAL_IMMEDIATE_DRAW); |
335 | 363 | ||
336 | plothandle[id] = PlotXY (panelHandle, PANEL_GRAPH, timebins, fdata, nsamples, VAL_FLOAT, VAL_FLOAT, VAL_FAT_LINE, VAL_NO_POINT, VAL_SOLID, 1, col[id]); |
364 | plothandle[id] = PlotXY (panelHandle, PANEL_GRAPH, timebins, fdata, nsamples, VAL_FLOAT, VAL_FLOAT, VAL_FAT_LINE, VAL_NO_POINT, VAL_SOLID, 1, col[id]); |
337 | 365 | ||
338 | H1D_Draw(1, |
366 | H1D_Draw(1, ch0Handle,CH0_ADC1,&adcplothandle[0]); |
339 | H1D_Draw(2, |
367 | H1D_Draw(2, ch1Handle,CH1_ADC2,&adcplothandle[1]); |
340 | H1D_Draw(3, |
368 | H1D_Draw(3, ch0Handle,CH0_TDC1,&tdcplothandle[0]); |
341 | H1D_Draw(4, |
369 | H1D_Draw(4, ch1Handle,CH1_TDC2,&tdcplothandle[1]); |
342 | 370 | ||
343 | if (debug) for (int k=0; k<10; k++) printf("%d %d (%f , %d)\n", id,k, timebins[k],data[k]); |
371 | if (debug) for (int k=0; k<10; k++) printf("%d %d (%f , %d)\n", id,k, timebins[k],data[k]); |
344 | } |
372 | } |
345 | 373 | ||
346 | nr+=8; |
374 | nr+=8; |
347 | adc=10000; |
375 | adc=10000; |
Line 431... | Line 459... | ||
431 | printf("%s\n",data); |
459 | printf("%s\n",data); |
432 | break; |
460 | break; |
433 | case 1:// read |
461 | case 1:// read |
434 | 462 | ||
435 | GetCtrlVal(panelHandle,PANEL_CEVE , &event); |
463 | GetCtrlVal(panelHandle,PANEL_CEVE , &event); |
436 | GetCtrlVal( |
464 | GetCtrlVal(settingsHandle,SETTINGS_NTOTAL , &ncalls); |
437 | 465 | ||
438 | event += analyse(nb,data, evinfo, &ninfo); |
466 | event += analyse(nb,data, evinfo, &ninfo); |
439 | if (foutput) { |
467 | if (foutput) { |
440 | if (outwaveforms) fwrite(data, 1, nb, foutput); |
468 | if (outwaveforms) fwrite(data, 1, nb, foutput); |
441 | fwrite(evinfo, 1, ninfo*sizeof(int), foutput); |
469 | fwrite(evinfo, 1, ninfo*sizeof(int), foutput); |
Line 482... | Line 510... | ||
482 | } |
510 | } |
483 | 511 | ||
484 | int CVICALLBACK StartCB (int panel, int control, int event, |
512 | int CVICALLBACK StartCB (int panel, int control, int event, |
485 | void *callbackData, int eventData1, int eventData2) { |
513 | void *callbackData, int eventData1, int eventData2) { |
486 | char ip[0xFF]; |
514 | char ip[0xFF]; |
- | 515 | char path[0xFF]; |
|
487 | int hdr[0xFF]; |
516 | int hdr[0xFF]; |
488 | char filename[0xFF]; |
517 | char filename[0xFF]; |
- | 518 | char filepath[0xFF]; |
|
489 | unsigned short *sbuff = (unsigned short *)&hdr[5] ; |
519 | unsigned short *sbuff = (unsigned short *)&hdr[5] ; |
490 | unsigned char *cbuff = (unsigned char *)&sbuff[3] ; |
520 | unsigned char *cbuff = (unsigned char *)&sbuff[3] ; |
491 | int imask[2]; |
521 | int imask[2]; |
492 | unsigned char mask; |
522 | unsigned char mask; |
493 | unsigned char trigger; |
523 | unsigned char trigger; |
Line 496... | Line 526... | ||
496 | int nbefore; |
526 | int nbefore; |
497 | unsigned int decimation; |
527 | unsigned int decimation; |
498 | unsigned short neve; |
528 | unsigned short neve; |
499 | int output; |
529 | int output; |
500 | switch (event) { |
530 | switch (event) { |
501 | case EVENT_COMMIT: { |
531 | case EVENT_COMMIT: { |
502 | GetCtrlVal( |
532 | GetCtrlVal(settingsHandle,SETTINGS_IP, ip); |
503 | GetCtrlVal( |
533 | GetCtrlVal(settingsHandle,SETTINGS_TRIGGER, &trigger); |
504 | GetCtrlVal( |
534 | GetCtrlVal(settingsHandle,SETTINGS_SAMPLES, &nsamples); |
505 | GetCtrlVal( |
535 | GetCtrlVal(settingsHandle,SETTINGS_DECIMATION,&decimation); |
506 | GetCtrlVal( |
536 | GetCtrlVal(settingsHandle,SETTINGS_NEVE , &neve); |
507 | GetCtrlVal( |
537 | GetCtrlVal(settingsHandle,SETTINGS_CH0 , &imask[0] ); |
508 | GetCtrlVal( |
538 | GetCtrlVal(settingsHandle,SETTINGS_CH1 , &imask[1] ); |
509 | GetCtrlVal( |
539 | GetCtrlVal(settingsHandle,SETTINGS_PFREQ , &pfreq); |
510 | GetCtrlVal( |
540 | GetCtrlVal(settingsHandle,SETTINGS_DEBUG , &debug); |
511 | GetCtrlVal( |
541 | GetCtrlVal(settingsHandle,SETTINGS_NBEFORE , &nbefore); |
512 | GetCtrlVal( |
542 | GetCtrlVal(settingsHandle,SETTINGS_ENABLEDOUTPUT, &output); |
513 | GetCtrlVal(panel,PANEL_OUTWAVE, &outwaveforms); |
543 | GetCtrlVal(panel,PANEL_OUTWAVE, &outwaveforms); |
514 | GetCtrlVal( |
544 | GetCtrlVal(settingsHandle,SETTINGS_FILENAME, filename); |
515 | - | ||
- | 545 | sprintf(path, "%s\\Desktop\\data", getenv("USERPROFILE")); |
|
- | 546 | MakeDir (path); |
|
- | 547 | sprintf(filepath,"%s\\%s", path, filename); |
|
516 | delay= MINTRGDELAY + nsamples - nbefore + 1; |
548 | delay= MINTRGDELAY + nsamples - nbefore + 1; |
517 | 549 | ||
518 | mask = 0; |
550 | mask = 0; |
519 | for (int i=0; i<2; i++) { |
551 | for (int i=0; i<2; i++) { |
520 | if (imask[i]) mask |= (1<<i); |
552 | if (imask[i]) mask |= (1<<i); |
521 | } |
553 | } |
522 | 554 | ||
523 | double level =0; |
555 | double level =0; |
524 | GetCtrlVal( |
556 | GetCtrlVal(settingsHandle,SETTINGS_TRGLEVEL , &level); |
525 | 557 | ||
526 | 558 | ||
527 | switch (control) { |
559 | switch (control) { |
528 | case PANEL_CONNECT: { |
560 | case PANEL_CONNECT: { |
529 | int state; |
561 | int state; |
Line 537... | Line 569... | ||
537 | } |
569 | } |
538 | break; |
570 | break; |
539 | case PANEL_START: { |
571 | case PANEL_START: { |
540 | int state; |
572 | int state; |
541 | GetCtrlVal(panel,PANEL_START, &state); |
573 | GetCtrlVal(panel,PANEL_START, &state); |
542 | GetCtrlVal( |
574 | GetCtrlVal(ch0Handle,CH0_EXCLUDE_1, &excludefirst[0]); |
543 | GetCtrlVal( |
575 | GetCtrlVal(ch1Handle,CH1_EXCLUDE_2, &excludefirst[1]); |
- | 576 | ||
544 | if (state && eventData1==0) { |
577 | if (state && eventData1==0) { |
545 | histoinit(); |
578 | histoinit(); |
546 | starttime=Timer(); |
579 | starttime=Timer(); |
547 | daqtime =0; |
580 | daqtime =0; |
548 | /* decimation n (=1,8,64...) : frequency = 125/n MHz*/ |
581 | /* decimation n (=1,8,64...) : frequency = 125/n MHz*/ |
549 | for (int i=0; i<nsamples; i++) timebins[i]=(i-nbefore)* (float)decimation /125.; |
582 | for (int i=0; i<nsamples; i++) timebins[i]=(i-nbefore)* (float)decimation /125.; |
550 | if (output) foutput = fopen( |
583 | if (output) foutput = fopen(filepath, "wb"); |
551 | printf("decimation %d\n", decimation); |
584 | printf("decimation %d\n", decimation); |
552 | SetCtrlVal(panel,PANEL_CEVE , 0); |
585 | SetCtrlVal(panel,PANEL_CEVE , 0); |
553 | ctrl_c=0; |
586 | ctrl_c=0; |
554 | hdr[0] = 0; |
587 | hdr[0] = 0; |
555 | hdr[1] = 7*sizeof(int); |
588 | hdr[1] = 7*sizeof(int); |
Line 604... | Line 637... | ||
604 | int CVICALLBACK ExportCB (int panel, int control, int event, |
637 | int CVICALLBACK ExportCB (int panel, int control, int event, |
605 | void *callbackData, int eventData1, int eventData2) { |
638 | void *callbackData, int eventData1, int eventData2) { |
606 | int hid=0; |
639 | int hid=0; |
607 | switch (event) { |
640 | switch (event) { |
608 | case EVENT_COMMIT: |
641 | case EVENT_COMMIT: |
609 | switch (control) { |
- | |
610 | case PANEL_EXPORT_1: |
- | |
611 | hid=1; |
- | |
612 | break; |
- | |
613 |
|
642 | if (panel== ch0Handle){ |
614 | hid=2; |
- | |
615 | break; |
- | |
616 |
|
643 | switch (control) { |
617 | hid=3; |
- | |
618 | break; |
- | |
619 | case |
644 | case CH0_EXPORT_1: |
620 | hid= |
645 | hid=1; |
621 | break; |
646 | break; |
622 | 647 | ||
- | 648 | case CH0_EXPORT_3: |
|
- | 649 | hid=3; |
|
- | 650 | break; |
|
- | 651 | ||
- | 652 | ||
- | 653 | } |
|
- | 654 | } |
|
- | 655 | if (panel== ch1Handle){ |
|
- | 656 | switch (control) { |
|
- | 657 | ||
- | 658 | case CH1_EXPORT_2: |
|
- | 659 | hid=2; |
|
- | 660 | break; |
|
- | 661 | ||
- | 662 | case CH1_EXPORT_4: |
|
- | 663 | hid=4; |
|
- | 664 | break; |
|
- | 665 | ||
- | 666 | } |
|
623 | } |
667 | } |
624 | export_data(hid); |
668 | export_data(hid); |
625 | break; |
669 | break; |
626 | } |
670 | } |
627 | return 0; |
671 | return 0; |