Rev 212 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 212 | Rev 292 | ||
---|---|---|---|
1 | #include <formatio.h> |
1 | #include <formatio.h> |
2 | #include <cvirte.h> |
2 | #include <cvirte.h> |
3 | #include <userint.h> |
3 | #include <userint.h> |
4 | #include "AitGui.h" |
4 | #include "AitGui.h" |
5 | #include "XYSCAN.h" |
5 | #include "XYSCAN.h" |
6 | 6 | ||
7 | #include <stdbool.h> |
7 | #include <stdbool.h> |
8 | #include "AitInterface.h" |
8 | #include "AitInterface.h" |
9 | #include "AitMduManager_DEF.h" |
9 | #include "AitMduManager_DEF.h" |
10 | 10 | ||
11 | #include "H1D.h" |
11 | #include "H1D.h" |
12 | #include "H2D.h" |
12 | #include "H2D.h" |
13 | #include "H3D.h" |
13 | #include "H3D.h" |
14 | 14 | ||
15 | - | ||
- | 15 | static int node[3]; |
|
16 | typedef unsigned short ushort; |
16 | typedef unsigned short ushort; |
17 | typedef unsigned int uint; |
17 | typedef unsigned int uint; |
18 | 18 | ||
19 | static int ait; |
19 | static int ait; |
20 | static int xyscan; |
20 | static int xyscan; |
21 | //#define MIKRO |
21 | //#define MIKRO |
22 | 22 | ||
23 | #ifdef MIKRO |
23 | #ifdef MIKRO |
24 | #include "MIKRO.h" |
24 | #include "MIKRO.h" |
25 | #endif |
25 | #endif |
26 | 26 | ||
- | 27 | #define uSMC_USB |
|
- | 28 | #ifdef uSMC_USB |
|
- | 29 | # include "uSMC.h" |
|
- | 30 | # define uSMC_SERIAL_X "0000000000004925" |
|
- | 31 | # define uSMC_SERIAL_Y "0000000000006030" |
|
- | 32 | # define uSMC_SERIAL_Z "0000000000002894" |
|
- | 33 | const char serials[3][16]= {uSMC_SERIAL_X,uSMC_SERIAL_Y,uSMC_SERIAL_Z}; |
|
- | 34 | #endif /* uSMC_USB */ |
|
- | 35 | ||
27 | static int daq_on; |
36 | static int daq_on; |
28 | static int plothandle[4]= {0,0,0, 0}; |
37 | static int plothandle[4]= {0,0,0, 0}; |
29 | static int tfID; |
38 | static int tfID; |
30 | static int controlID; |
39 | static int controlID; |
31 | static int verbose; |
40 | static int verbose; |
32 | 41 | ||
33 | #define MAX_THREADS 10 |
42 | #define MAX_THREADS 10 |
34 | 43 | ||
35 | static CmtThreadPoolHandle poolHandle = 0; |
44 | static CmtThreadPoolHandle poolHandle = 0; |
36 | 45 | ||
37 | 46 | ||
38 | /* |
47 | /* |
39 | 48 | ||
40 | x: 140000 280000 |
49 | x: 140000 280000 |
41 | 50 | ||
42 | */ |
51 | */ |
43 | 52 | ||
44 | //**************************** missing declarations in the library |
53 | //**************************** missing declarations in the library |
45 | char strbuf[0xFF]; |
54 | char strbuf[0xFF]; |
46 | 55 | ||
47 | int gLog=0; |
56 | int gLog=0; |
48 | 57 | ||
49 | int printf(const char *format, ...) { |
58 | int printf(const char *format, ...) { |
50 | va_list aptr; |
59 | va_list aptr; |
51 | int ret; |
60 | int ret; |
52 | FILE *flog; |
61 | FILE *flog; |
53 | 62 | ||
54 | va_start(aptr, format); |
63 | va_start(aptr, format); |
55 | ret = vsprintf(strbuf, format, aptr); |
64 | ret = vsprintf(strbuf, format, aptr); |
56 | va_end(aptr); |
65 | va_end(aptr); |
57 | SetCtrlVal(ait,AIT_STDIO,strbuf); |
66 | SetCtrlVal(ait,AIT_STDIO,strbuf); |
58 | 67 | ||
59 | if (gLog) { |
68 | if (gLog) { |
60 | flog = fopen ("stdio.log", "a"); |
69 | flog = fopen ("stdio.log", "a"); |
61 | fprintf (flog, "%s", strbuf); |
70 | fprintf (flog, "%s", strbuf); |
62 | fclose (flog); |
71 | fclose (flog); |
63 | } |
72 | } |
64 | return(ret); |
73 | return(ret); |
65 | } |
74 | } |
66 | 75 | ||
67 | 76 | ||
68 | 77 | ||
69 | static int timeout=0; |
78 | static int timeout=0; |
70 | int CVICALLBACK SetTimeoutCB (int panel, int control, int event, |
79 | int CVICALLBACK SetTimeoutCB (int panel, int control, int event, |
71 | void *callbackData, int eventData1, int eventData2) { |
80 | void *callbackData, int eventData1, int eventData2) { |
72 | switch (event) { |
81 | switch (event) { |
73 | case EVENT_TIMER_TICK: |
82 | case EVENT_TIMER_TICK: |
74 | timeout=1; |
83 | timeout=1; |
75 | printf("#### Timeout\n"); |
84 | printf("#### Timeout\n"); |
76 | break; |
85 | break; |
77 | } |
86 | } |
78 | return 0; |
87 | return 0; |
79 | } |
88 | } |
80 | 89 | ||
81 | 90 | ||
82 | 91 | ||
83 | static void start_timer (double tout) { |
92 | static void start_timer (double tout) { |
84 | timeout = 0; |
93 | timeout = 0; |
85 | SetCtrlAttribute (ait, AIT_TIMER, ATTR_INTERVAL, tout); |
94 | SetCtrlAttribute (ait, AIT_TIMER, ATTR_INTERVAL, tout); |
86 | SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 1); |
95 | SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 1); |
87 | } |
96 | } |
88 | 97 | ||
89 | static void stop_timer ( void ) { |
98 | static void stop_timer ( void ) { |
90 | SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 0); |
99 | SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 0); |
91 | //DRSSetTimeout(); |
100 | //DRSSetTimeout(); |
92 | } |
101 | } |
93 | 102 | ||
94 | 103 | ||
95 | 104 | ||
96 | void CVICALLBACK EndOfThread ( CmtThreadPoolHandle poolhandle, |
105 | void CVICALLBACK EndOfThread ( CmtThreadPoolHandle poolhandle, |
97 | CmtThreadFunctionID functionID, unsigned int event, |
106 | CmtThreadFunctionID functionID, unsigned int event, |
98 | int value, void *callbackData ) { |
107 | int value, void *callbackData ) { |
99 | 108 | ||
100 | daq_on=0; |
109 | daq_on=0; |
101 | //SetDimming(0); |
110 | //SetDimming(0); |
102 | printf("End of Thread \n"); |
111 | printf("End of Thread \n"); |
103 | return ; |
112 | return ; |
104 | 113 | ||
105 | } |
114 | } |
106 | 115 | ||
107 | int AitInit() { |
116 | int AitInit() { |
108 | InitializeConnection(); |
117 | InitializeConnection(); |
109 | return 0; |
118 | return 0; |
110 | } |
119 | } |
111 | 120 | ||
112 | 121 | ||
113 | int AitValidEvent() { |
122 | int AitValidEvent() { |
114 | 123 | ||
115 | return 1; |
124 | return 1; |
116 | }; |
125 | }; |
117 | 126 | ||
118 | int AitToFile(FILE *fp, int n) { |
127 | int AitToFile(FILE *fp, int n) { |
119 | const int bsize=10000 ; |
128 | const int bsize=10000 ; |
120 | unsigned short a[bsize] ; |
129 | unsigned short a[bsize] ; |
121 | unsigned short buffer[2]={0x1}; |
130 | unsigned short buffer[2]={0x1}; |
122 | buffer[1] = (unsigned short)(n*CHANNELS*2); |
131 | buffer[1] = (unsigned short)(n*CHANNELS*2); |
123 | for (int eventNum = 0; eventNum < n; eventNum++) { |
132 | for (int eventNum = 0; eventNum < n; eventNum++) { |
124 | 133 | ||
125 | for (int channel = 0; channel < CHANNELS; channel++) { |
134 | for (int channel = 0; channel < CHANNELS; channel++) { |
126 | int index = channel+ CHANNELS * eventNum; |
135 | int index = channel+ CHANNELS * eventNum; |
127 | if (index<bsize) |
136 | if (index<bsize) |
128 | a[index] = ExtractAdcData(eventNum, channel); |
137 | a[index] = ExtractAdcData(eventNum, channel); |
129 | } |
138 | } |
130 | } |
139 | } |
131 | fwrite(buffer, 2*sizeof(short),1,fp); |
140 | fwrite(buffer, 2*sizeof(short),1,fp); |
132 | return fwrite(a, 1,buffer[1],fp); |
141 | return fwrite(a, 1,buffer[1],fp); |
133 | }; |
142 | }; |
134 | 143 | ||
135 | int AitFillHistograms(int events) { |
144 | int AitFillHistograms(int events) { |
136 | ushort rawAdcData = 0; |
145 | ushort rawAdcData = 0; |
137 | ushort adcData = 0; |
146 | ushort adcData = 0; |
138 | int channelReceived = 0; |
147 | int channelReceived = 0; |
139 | int channelExpected = 0; |
148 | int channelExpected = 0; |
140 | bool includeSaturated = 0; // cbIncludeSaturated.Checked; |
149 | bool includeSaturated = 0; // cbIncludeSaturated.Checked; |
141 | ushort max[CHANNELS]; |
150 | ushort max[CHANNELS]; |
142 | ushort min[CHANNELS]; |
151 | ushort min[CHANNELS]; |
143 | ushort average[CHANNELS]; |
152 | ushort average[CHANNELS]; |
144 | int total[CHANNELS]; |
153 | int total[CHANNELS]; |
145 | for (int i = 0; i < CHANNELS; i++) { |
154 | for (int i = 0; i < CHANNELS; i++) { |
146 | min[i] = 0xFFFF; |
155 | min[i] = 0xFFFF; |
147 | max[i] = 0; |
156 | max[i] = 0; |
148 | total[i] = 0; |
157 | total[i] = 0; |
149 | } |
158 | } |
150 | 159 | ||
151 | double threshold, xysumcut; |
160 | double threshold, xysumcut; |
152 | GetCtrlVal (ait, AIT_ADCTHRESHOLD, &threshold); |
161 | GetCtrlVal (ait, AIT_ADCTHRESHOLD, &threshold); |
153 | GetCtrlVal (ait, AIT_XYCUT, &xysumcut); |
162 | GetCtrlVal (ait, AIT_XYCUT, &xysumcut); |
154 | 163 | ||
155 | for (int eventNum = 0; eventNum < events; eventNum++) { |
164 | for (int eventNum = 0; eventNum < events; eventNum++) { |
156 | 165 | ||
157 | int sum = 0; |
166 | int sum = 0; |
158 | double a[4]= {0,0,0,0} ; |
167 | double a[4]= {0,0,0,0} ; |
159 | for (int channel = 0; channel < CHANNELS; channel++) { |
168 | for (int channel = 0; channel < CHANNELS; channel++) { |
160 | 169 | ||
161 | rawAdcData = ExtractAdcData(eventNum, channel); |
170 | rawAdcData = ExtractAdcData(eventNum, channel); |
162 | if (addChannelNum == true) { |
171 | if (addChannelNum == true) { |
163 | channelReceived = (rawAdcData >> 12) & 0xF; |
172 | channelReceived = (rawAdcData >> 12) & 0xF; |
164 | channelExpected = (channel & 0xF); |
173 | channelExpected = (channel & 0xF); |
165 | if (channelReceived != channelExpected) { |
174 | if (channelReceived != channelExpected) { |
166 | 175 | ||
167 | AddMessage("ERROR in Event %d : Expected channel %d, received %d -ANALYSIS STOPPED", eventNum, channelExpected, channelReceived); |
176 | AddMessage("ERROR in Event %d : Expected channel %d, received %d -ANALYSIS STOPPED", eventNum, channelExpected, channelReceived); |
168 | 177 | ||
169 | //EnableRegisterScanTimer(true); |
178 | //EnableRegisterScanTimer(true); |
170 | return eventNum; |
179 | return eventNum; |
171 | } |
180 | } |
172 | } |
181 | } |
173 | adcData = (ushort)(rawAdcData & 0x0FFF); // remove channel number |
182 | adcData = (ushort)(rawAdcData & 0x0FFF); // remove channel number |
174 | //if ((includeSaturated == true) || ((includeSaturated == false) && (adcData < (ADCMAX - 2)))) |
183 | //if ((includeSaturated == true) || ((includeSaturated == false) && (adcData < (ADCMAX - 2)))) |
175 | 184 | ||
176 | if (adcData>threshold) H1D_Fill(channel, adcData,1); |
185 | if (adcData>threshold) H1D_Fill(channel, adcData,1); |
177 | a[channel]=adcData; |
186 | a[channel]=adcData; |
178 | total[channel] = total[channel] + adcData; |
187 | total[channel] = total[channel] + adcData; |
179 | if (adcData > max[channel]) |
188 | if (adcData > max[channel]) |
180 | max[channel] = adcData; |
189 | max[channel] = adcData; |
181 | else if (adcData < min[channel]) |
190 | else if (adcData < min[channel]) |
182 | min[channel] = adcData; |
191 | min[channel] = adcData; |
183 | 192 | ||
184 | sum += adcData; |
193 | sum += adcData; |
185 | } |
194 | } |
186 | if (sum>threshold) { |
195 | if (sum>threshold) { |
187 | H1D_Fill(10, sum, 1 ); |
196 | H1D_Fill(10, sum, 1 ); |
188 | double x = a[0]/(a[0]+a[1]); |
197 | double x = a[0]/(a[0]+a[1]); |
189 | double y = a[2]/(a[2]+a[3]); |
198 | double y = a[2]/(a[2]+a[3]); |
190 | if (sum>xysumcut) H2D_Fill(0, x, y , 1 ); |
199 | if (sum>xysumcut) H2D_Fill(0, x, y , 1 ); |
191 | } |
200 | } |
192 | histogramTotalEvents++; |
201 | histogramTotalEvents++; |
193 | } |
202 | } |
194 | //tbAdcStatistics.Clear(); |
203 | //tbAdcStatistics.Clear(); |
195 | for (int channel = 0; channel < CHANNELS; channel++) { |
204 | for (int channel = 0; channel < CHANNELS; channel++) { |
196 | average[channel] = (ushort)(total[channel] / events); |
205 | average[channel] = (ushort)(total[channel] / events); |
197 | 206 | ||
198 | if (verbose) AddMessage(" {channel:%d} : {min:0x%d} {max:0x%d} {max-min:%d} {average:%d}\n", channel + 1, min[channel], max[channel], max[channel] - min[channel], average[channel]); |
207 | if (verbose) AddMessage(" {channel:%d} : {min:0x%d} {max:0x%d} {max-min:%d} {average:%d}\n", channel + 1, min[channel], max[channel], max[channel] - min[channel], average[channel]); |
199 | //if (channel < (CHANNELS - 1)) |
208 | //if (channel < (CHANNELS - 1)) |
200 | // tbAdcStatistics.AppendText(Environment.NewLine); |
209 | // tbAdcStatistics.AppendText(Environment.NewLine); |
201 | 210 | ||
202 | } |
211 | } |
203 | //SetTextboxToTop(tbAdcStatistics); |
212 | //SetTextboxToTop(tbAdcStatistics); |
204 | return 1; |
213 | return 1; |
205 | }; |
214 | }; |
206 | 215 | ||
207 | 216 | ||
208 | int CVICALLBACK RefreshGraphs (int panel, int control, int event, |
217 | int CVICALLBACK RefreshGraphs (int panel, int control, int event, |
209 | void *callbackData, int eventData1, int eventData2) { |
218 | void *callbackData, int eventData1, int eventData2) { |
210 | switch (event) { |
219 | switch (event) { |
211 | case EVENT_TIMER_TICK: |
220 | case EVENT_TIMER_TICK: |
212 | // if (!daq_on ) return 0; |
221 | // if (!daq_on ) return 0; |
213 | case EVENT_COMMIT: { |
222 | case EVENT_COMMIT: { |
214 | 223 | ||
215 | int ch=0; |
224 | int ch=0; |
216 | int logy=0; |
225 | int logy=0; |
217 | int updateplots=0; |
226 | int updateplots=0; |
218 | GetCtrlVal(ait,AIT_CH, &ch); |
227 | GetCtrlVal(ait,AIT_CH, &ch); |
219 | GetCtrlVal(ait,AIT_LOGY, &logy); |
228 | GetCtrlVal(ait,AIT_LOGY, &logy); |
220 | GetCtrlVal(ait,AIT_UPDATEPLOTS, &updateplots); |
229 | GetCtrlVal(ait,AIT_UPDATEPLOTS, &updateplots); |
221 | if (!updateplots) return 0; |
230 | if (!updateplots) return 0; |
222 | if (logy){ |
231 | if (logy){ |
223 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG); |
232 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG); |
224 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG); |
233 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG); |
225 | 234 | ||
226 | } else { |
235 | } else { |
227 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR); |
236 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR); |
228 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR); |
237 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR); |
229 | 238 | ||
230 | } |
239 | } |
231 | H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]); |
240 | H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]); |
232 | H1D_Draw(10,ait,AIT_GRAPHSUM,&plothandle[1]); |
241 | H1D_Draw(10,ait,AIT_GRAPHSUM,&plothandle[1]); |
233 | H2D_Draw(0,ait,AIT_GRAPHXY,&plothandle[2]); |
242 | H2D_Draw(0,ait,AIT_GRAPHXY,&plothandle[2]); |
234 | 243 | ||
235 | 244 | ||
236 | } |
245 | } |
237 | 246 | ||
238 | 247 | ||
239 | break; |
248 | break; |
240 | 249 | ||
241 | } |
250 | } |
242 | return 0; |
251 | return 0; |
243 | } |
252 | } |
244 | 253 | ||
245 | 254 | ||
246 | 255 | ||
247 | int CVICALLBACK daq(void *functionData) { |
256 | int CVICALLBACK daq(void *functionData) { |
248 | 257 | ||
249 | 258 | ||
250 | int neve; |
259 | int neve; |
251 | char filename[0xff]; |
260 | char filename[0xff]; |
252 | char fname[0xff]; |
261 | char fname[0xff]; |
253 | char pname[0xff]; |
262 | char pname[0xff]; |
254 | 263 | ||
255 | 264 | ||
256 | 265 | ||
257 | int pfreq; |
266 | int pfreq; |
258 | int enabledoutput; |
267 | int enabledoutput; |
259 | int neveold = 0; |
268 | int neveold = 0; |
260 | double rate; |
269 | double rate; |
261 | int *args = (int *) functionData; |
270 | int *args = (int *) functionData; |
262 | 271 | ||
263 | GetCtrlVal(ait, AIT_FILENAME, fname ); |
272 | GetCtrlVal(ait, AIT_FILENAME, fname ); |
264 | GetCtrlVal(ait, AIT_PATHNAME, pname ); |
273 | GetCtrlVal(ait, AIT_PATHNAME, pname ); |
265 | sprintf(filename,"%s/%s", pname, fname); |
274 | sprintf(filename,"%s/%s", pname, fname); |
266 | 275 | ||
267 | GetCtrlVal(ait,AIT_NEVE, &neve); |
276 | GetCtrlVal(ait,AIT_NEVE, &neve); |
268 | GetCtrlVal(ait,AIT_DEBUG, &verbose); |
277 | GetCtrlVal(ait,AIT_DEBUG, &verbose); |
269 | GetCtrlVal(ait,AIT_PFREQ, &pfreq); |
278 | GetCtrlVal(ait,AIT_PFREQ, &pfreq); |
270 | GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput); |
279 | GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput); |
271 | 280 | ||
272 | 281 | ||
273 | int range=0; |
282 | int range=0; |
274 | int nch = range; |
283 | int nch = range; |
275 | GetCtrlVal(ait,AIT_MAX, &range); |
284 | GetCtrlVal(ait,AIT_MAX, &range); |
276 | if (range>512) nch = 512; |
285 | if (range>512) nch = 512; |
277 | 286 | ||
278 | 287 | ||
279 | for (int i=0; i<4; i++) { |
288 | for (int i=0; i<4; i++) { |
280 | char name[0xFF]; |
289 | char name[0xFF]; |
281 | sprintf(name,"adc%d", i); |
290 | sprintf(name,"adc%d", i); |
282 | 291 | ||
283 | H1D_Init(i, name,name, range, 0 , range); |
292 | H1D_Init(i, name,name, range, 0 , range); |
284 | H1D_SetTitleX(0,"ADC"); |
293 | H1D_SetTitleX(0,"ADC"); |
285 | H1D_SetTitleY(0,"N"); |
294 | H1D_SetTitleY(0,"N"); |
286 | } |
295 | } |
287 | H1D_Init(10, "adcsum","adcsum", range, 0 , 4*range); |
296 | H1D_Init(10, "adcsum","adcsum", range, 0 , 4*range); |
288 | H1D_SetTitleX(0,"ADC"); |
297 | H1D_SetTitleX(0,"ADC"); |
289 | H1D_SetTitleY(0,"N"); |
298 | H1D_SetTitleY(0,"N"); |
290 | 299 | ||
291 | H2D_Init(0, "cog","Center of gravity", 256, 0 ,1, 256, 0 ,1); |
300 | H2D_Init(0, "cog","Center of gravity", 256, 0 ,1, 256, 0 ,1); |
292 | H2D_SetTitleX(0,"x"); |
301 | H2D_SetTitleX(0,"x"); |
293 | H2D_SetTitleY(0,"y"); |
302 | H2D_SetTitleY(0,"y"); |
294 | 303 | ||
295 | 304 | ||
296 | 305 | ||
297 | FILE *fp= NULL; |
306 | FILE *fp= NULL; |
298 | 307 | ||
299 | if (enabledoutput) { |
308 | if (enabledoutput) { |
300 | if (args[0]) fp = fopen(filename,"wb"); |
309 | if (args[0]) fp = fopen(filename,"wb"); |
301 | else fp = fopen(filename,"ab"); |
310 | else fp = fopen(filename,"ab"); |
302 | } |
311 | } |
303 | 312 | ||
304 | 313 | ||
305 | 314 | ||
306 | 315 | ||
307 | 316 | ||
308 | time_t t=0,told=0, tstart=0; |
317 | time_t t=0,told=0, tstart=0; |
309 | 318 | ||
310 | if (!AitInit()) { |
319 | if (!AitInit()) { |
311 | 320 | ||
312 | 321 | ||
313 | ReadRegisters(); |
322 | ReadRegisters(); |
314 | 323 | ||
315 | 324 | ||
316 | // Update UI |
325 | // Update UI |
317 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
326 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
318 | 327 | ||
319 | int value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
328 | int value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
320 | ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
329 | ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
321 | SetCtrlVal (ait, AIT_GETADCGAIN, value); |
330 | SetCtrlVal (ait, AIT_GETADCGAIN, value); |
322 | double valued = GetThreshold(); |
331 | double valued = GetThreshold(); |
323 | SetCtrlVal (ait, AIT_GETADCTHRESHOLD, valued); |
332 | SetCtrlVal (ait, AIT_GETADCTHRESHOLD, valued); |
324 | valued = GetIntegrationTime(); |
333 | valued = GetIntegrationTime(); |
325 | SetCtrlVal (ait, AIT_GETADCINTEGRATIONTIME, valued); |
334 | SetCtrlVal (ait, AIT_GETADCINTEGRATIONTIME, valued); |
326 | valued = GetHvVoltage(ADDR_HV_VMON); |
335 | valued = GetHvVoltage(ADDR_HV_VMON); |
327 | SetCtrlVal (ait, AIT_BIASMON, valued); |
336 | SetCtrlVal (ait, AIT_BIASMON, valued); |
328 | 337 | ||
329 | value = |
338 | value = |
330 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
339 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
331 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
340 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
332 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
341 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
333 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
342 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
334 | SetCtrlVal (ait, AIT_GETADCSUMGAIN, value); |
343 | SetCtrlVal (ait, AIT_GETADCSUMGAIN, value); |
335 | 344 | ||
336 | 345 | ||
337 | 346 | ||
338 | RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 ); |
347 | RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 ); |
339 | 348 | ||
340 | daq_on=1; |
349 | daq_on=1; |
341 | //RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 ); |
350 | //RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 ); |
342 | time(&tstart); |
351 | time(&tstart); |
343 | told=tstart; |
352 | told=tstart; |
344 | int i=0; |
353 | int i=0; |
345 | for (i=0; i<neve; i++) { |
354 | for (i=0; i<neve; i++) { |
346 | start_timer(1);// 1 s timeout |
355 | start_timer(1);// 1 s timeout |
347 | // Set ADC reset |
356 | // Set ADC reset |
348 | ResetAdc(true); |
357 | ResetAdc(true); |
349 | // Clear ADC reset |
358 | // Clear ADC reset |
350 | ResetAdc(false); |
359 | ResetAdc(false); |
351 | int eventsAcquired = Acquire(pfreq); |
360 | int eventsAcquired = Acquire(pfreq); |
352 | stop_timer(); |
361 | stop_timer(); |
353 | if (!daq_on) break; |
362 | if (!daq_on) break; |
354 | if (timeout) { |
363 | if (timeout) { |
355 | i--; |
364 | i--; |
356 | printf("INFO Timeout\n"); |
365 | printf("INFO Timeout\n"); |
357 | continue; |
366 | continue; |
358 | } |
367 | } |
359 | int isvalid =1; |
368 | int isvalid =1; |
360 | if (eventsAcquired < 1) { |
369 | if (eventsAcquired < 1) { |
361 | printf("Acquired events %d\n", eventsAcquired); |
370 | printf("Acquired events %d\n", eventsAcquired); |
362 | isvalid = 0; |
371 | isvalid = 0; |
363 | } else { |
372 | } else { |
364 | AitFillHistograms(eventsAcquired); |
373 | AitFillHistograms(eventsAcquired); |
365 | if (verbose) ShowEvent(1); |
374 | if (verbose) ShowEvent(1); |
366 | } |
375 | } |
367 | 376 | ||
368 | int nb = ( isvalid && fp ) ? AitToFile( fp , pfreq ) : 0; |
377 | int nb = ( isvalid && fp ) ? AitToFile( fp , pfreq ) : 0; |
369 | SetCtrlVal(ait,AIT_CEVE,i); |
378 | SetCtrlVal(ait,AIT_CEVE,i); |
370 | if (!isvalid) i--; |
379 | if (!isvalid) i--; |
371 | 380 | ||
372 | time(&t); |
381 | time(&t); |
373 | if (t!=told ) { |
382 | if (t!=told ) { |
374 | rate = (i-neveold); |
383 | rate = (i-neveold); |
375 | printf("%d events in %2.2f min (%d s) Rate %f Hz %s ",i+1, (double)(t-tstart)/60.,(t-tstart), rate , ctime(&t)); |
384 | printf("%d events in %2.2f min (%d s) Rate %f Hz %s ",i+1, (double)(t-tstart)/60.,(t-tstart), rate , ctime(&t)); |
376 | neveold = i; |
385 | neveold = i; |
377 | RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 ); |
386 | RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 ); |
378 | double daqBlocksize = GetAdcEventSize() * pfreq * 2.0; |
387 | double daqBlocksize = GetAdcEventSize() * pfreq * 2.0; |
379 | double daqTimeMs = BlockTransferTime(); |
388 | double daqTimeMs = BlockTransferTime(); |
380 | double daqTransferRate = daqBlocksize / daqTimeMs; |
389 | double daqTransferRate = daqBlocksize / daqTimeMs; |
381 | SetCtrlVal(ait,AIT_DAQBLOCKSIZE, daqBlocksize); |
390 | SetCtrlVal(ait,AIT_DAQBLOCKSIZE, daqBlocksize); |
382 | SetCtrlVal(ait,AIT_DAQTIMEMS,daqTimeMs); |
391 | SetCtrlVal(ait,AIT_DAQTIMEMS,daqTimeMs); |
383 | SetCtrlVal(ait,AIT_DAQTRANSFERRATE,daqTransferRate); |
392 | SetCtrlVal(ait,AIT_DAQTRANSFERRATE,daqTransferRate); |
384 | } |
393 | } |
385 | told=t; |
394 | told=t; |
386 | 395 | ||
387 | 396 | ||
388 | 397 | ||
389 | } |
398 | } |
390 | time(&t); |
399 | time(&t); |
391 | printf("%d events in %2.2f min (%d s) %s",i+1, (double)(t-tstart)/60.,t-tstart, ctime(&t)); |
400 | printf("%d events in %2.2f min (%d s) %s",i+1, (double)(t-tstart)/60.,t-tstart, ctime(&t)); |
392 | 401 | ||
393 | } |
402 | } |
394 | 403 | ||
395 | if (fp) fclose(fp); |
404 | if (fp) fclose(fp); |
396 | 405 | ||
397 | 406 | ||
398 | RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 ); |
407 | RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 ); |
399 | return 0; |
408 | return 0; |
400 | 409 | ||
401 | } |
410 | } |
402 | 411 | ||
403 | 412 | ||
404 | int CVICALLBACK scan(void *functionData) { |
413 | int CVICALLBACK scan(void *functionData) { |
405 | 414 | ||
406 | int dx[3]={0,0,0}; |
415 | int dx[3]={0,0,0}; |
407 | int nx[3]={0,0,0}; |
416 | int nx[3]={0,0,0}; |
408 | int x0[3]={0,0,0}; |
417 | int x0[3]={0,0,0}; |
409 | int ix[3]={0,0,0}; |
418 | int ix[3]={0,0,0}; |
410 | int idx[3]={0,0,0}; |
419 | int idx[3]={0,0,0}; |
411 | unsigned short size; |
420 | unsigned short size; |
412 | unsigned short posrec={0x2}; |
421 | unsigned short posrec={0x2}; |
413 | unsigned short runbuf={0x3}; |
422 | unsigned short runbuf={0x3}; |
414 | 423 | ||
415 | int n[3]; |
424 | int n[3]; |
416 | char filename[0xFF]; |
425 | char filename[0xFF]; |
417 | char fname[0xff]; |
426 | char fname[0xff]; |
418 | char pname[0xff]; |
427 | char pname[0xff]; |
419 | int enabledoutput; |
428 | int enabledoutput; |
420 | 429 | ||
421 | FILE *fp; |
430 | FILE *fp; |
422 | GetCtrlVal(ait, AIT_FILENAME, fname ); |
431 | GetCtrlVal(ait, AIT_FILENAME, fname ); |
423 | GetCtrlVal(ait, AIT_PATHNAME, pname ); |
432 | GetCtrlVal(ait, AIT_PATHNAME, pname ); |
424 | sprintf(filename,"%s/%s", pname, fname); |
433 | sprintf(filename,"%s/%s", pname, fname); |
425 | 434 | ||
426 | GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput); |
435 | GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput); |
427 | int fsize; |
436 | int fsize; |
428 | if ( GetFileInfo(filename,&fsize) ) { |
437 | if ( GetFileInfo(filename,&fsize) ) { |
429 | MessagePopup ("Warning", "File exist. Remove it first or choose another file"); |
438 | MessagePopup ("Warning", "File exist. Remove it first or choose another file"); |
430 | return 0; |
439 | return 0; |
431 | } |
440 | } |
432 | GetCtrlVal(xyscan, SCAN_STEPX, &dx[0]); |
441 | GetCtrlVal(xyscan, SCAN_STEPX, &dx[0]); |
433 | GetCtrlVal(xyscan, SCAN_STEPY, &dx[1]); |
442 | GetCtrlVal(xyscan, SCAN_STEPY, &dx[1]); |
434 | GetCtrlVal(xyscan, SCAN_NSTEPSX, &nx[0]); |
443 | GetCtrlVal(xyscan, SCAN_NSTEPSX, &nx[0]); |
435 | GetCtrlVal(xyscan, SCAN_NSTEPSY, &nx[1]); |
444 | GetCtrlVal(xyscan, SCAN_NSTEPSY, &nx[1]); |
436 | GetCtrlVal(xyscan, SCAN_STARTX, &x0[0]); |
445 | GetCtrlVal(xyscan, SCAN_STARTX, &x0[0]); |
437 | GetCtrlVal(xyscan, SCAN_STARTY, &x0[1]); |
446 | GetCtrlVal(xyscan, SCAN_STARTY, &x0[1]); |
438 | 447 | ||
439 | 448 | ||
440 | if (enabledoutput) { |
449 | if (enabledoutput) { |
441 | fp = fopen(filename,"ab"); |
450 | fp = fopen(filename,"ab"); |
442 | if (fp) { |
451 | if (fp) { |
443 | size=36; |
452 | size=36; |
444 | fwrite(&runbuf, sizeof(unsigned short),1 ,fp); |
453 | fwrite(&runbuf, sizeof(unsigned short),1 ,fp); |
445 | fwrite(&size , sizeof(unsigned short),1 ,fp); |
454 | fwrite(&size , sizeof(unsigned short),1 ,fp); |
446 | fwrite(x0 , 1,4*3 ,fp); |
455 | fwrite(x0 , 1,4*3 ,fp); |
447 | fwrite(dx , 1,4*3 ,fp); |
456 | fwrite(dx , 1,4*3 ,fp); |
448 | fwrite(nx , 1,4*3 ,fp); |
457 | fwrite(nx , 1,4*3 ,fp); |
449 | fclose(fp); |
458 | fclose(fp); |
450 | } |
459 | } |
451 | } |
460 | } |
452 | 461 | ||
453 | for (int j=0; j<nx[1]; j++) { |
462 | for (int j=0; j<nx[1]; j++) { |
454 | 463 | ||
455 | SetCtrlVal (xyscan, SCAN_IY, j); |
464 | SetCtrlVal (xyscan, SCAN_IY, j); |
456 | ix[1]= x0[1]+j*dx[1]; |
465 | ix[1]= x0[1]+j*dx[1]; |
457 | #ifdef MIKRO |
466 | #ifdef MIKRO |
458 | MIKRO_MoveTo(2,ix[1]); |
467 | MIKRO_MoveTo(2,ix[1]); |
459 | MIKRO_GetPosition(2,&n[1]); |
468 | MIKRO_GetPosition(2,&n[1]); |
460 |
|
469 | SetCtrlVal (xyscan, SCAN_YP, n[1]); |
- | 470 | #endif |
|
- | 471 | #ifdef uSMC_USB |
|
- | 472 | uSMC_MoveTo(node[1],ix[1]); |
|
- | 473 | uSMC_GetPosition(node[1],&n[1]); |
|
- | 474 | SetCtrlVal (xyscan, SCAN_YP, n[1]); |
|
461 | #endif |
475 | #endif |
- | 476 | ||
- | 477 | ||
462 | 478 | ||
463 | for (int i=0; i<nx[0]; i++) { |
479 | for (int i=0; i<nx[0]; i++) { |
464 | SetCtrlVal (xyscan, SCAN_IX, i); |
480 | SetCtrlVal (xyscan, SCAN_IX, i); |
465 | ix[0]= x0[0]+i*dx[0]; |
481 | ix[0]= x0[0]+i*dx[0]; |
466 | #ifdef MIKRO |
482 | #ifdef MIKRO |
467 | MIKRO_MoveTo(1,ix[0]); |
483 | MIKRO_MoveTo(1,ix[0]); |
468 | MIKRO_GetPosition(1,&n[0]); |
484 | MIKRO_GetPosition(1,&n[0]); |
469 | SetCtrlVal (xyscan, SCAN_XP, n[0]); |
485 | SetCtrlVal (xyscan, SCAN_XP, n[0]); |
- | 486 | #endif |
|
- | 487 | #ifdef uSMC_USB |
|
- | 488 | uSMC_MoveTo(node[0],ix[0]); |
|
- | 489 | uSMC_GetPosition(node[0],&n[0]); |
|
- | 490 | SetCtrlVal (xyscan, SCAN_XP, n[0]); |
|
470 | 491 | #endif |
|
471 | 492 | ||
472 | if (enabledoutput) { |
493 | if (enabledoutput) { |
473 | fp = fopen(filename,"ab"); |
494 | fp = fopen(filename,"ab"); |
474 | if (fp) { |
495 | if (fp) { |
475 | time_t mtime; |
496 | time_t mtime; |
476 | idx[0]=i; |
497 | idx[0]=i; |
477 | idx[1]=j; |
498 | idx[1]=j; |
478 | size=24+sizeof(mtime); |
499 | size=24+sizeof(mtime); |
479 | fwrite(&posrec, sizeof(unsigned short),1 ,fp); |
500 | fwrite(&posrec, sizeof(unsigned short),1 ,fp); |
480 | fwrite(&size , sizeof(unsigned short),1 ,fp); |
501 | fwrite(&size , sizeof(unsigned short),1 ,fp); |
481 | fwrite(n , 1,4*3 ,fp); |
502 | fwrite(n , 1,4*3 ,fp); |
482 | fwrite(idx , 1,4*3 ,fp); |
503 | fwrite(idx , 1,4*3 ,fp); |
483 | time(&mtime); |
504 | time(&mtime); |
484 | fwrite(&mtime , sizeof(time_t),1 ,fp); |
505 | fwrite(&mtime , sizeof(time_t),1 ,fp); |
485 | fclose(fp); |
506 | fclose(fp); |
486 | } |
507 | } |
487 | } |
508 | } |
488 | 509 | ||
489 | #endif |
510 | |
490 | int newfile=0; |
511 | int newfile=0; |
491 | daq(&newfile); |
512 | daq(&newfile); |
492 | if (!daq_on) break; |
513 | if (!daq_on) break; |
493 | } |
514 | } |
494 | if (!daq_on) break; |
515 | if (!daq_on) break; |
495 | } |
516 | } |
496 | 517 | ||
497 | return 0; |
518 | return 0; |
498 | } |
519 | } |
499 | 520 | ||
500 | 521 | ||
501 | int main (int argc, char *argv[]) { |
522 | int main (int argc, char *argv[]) { |
502 | short port; |
523 | |
503 | if (InitCVIRTE (0, argv, 0) == 0) |
524 | if (InitCVIRTE (0, argv, 0) == 0) |
504 | return -1; /* out of memory */ |
525 | return -1; /* out of memory */ |
505 | if ((ait = LoadPanel (0, "AitGui.uir", AIT)) < 0) |
526 | if ((ait = LoadPanel (0, "AitGui.uir", AIT)) < 0) |
506 | return -1; |
527 | return -1; |
507 | if ((xyscan = LoadPanel (0, "XYSCAN.uir", SCAN)) < 0) |
528 | if ((xyscan = LoadPanel (0, "XYSCAN.uir", SCAN)) < 0) |
508 | return -1; |
529 | return -1; |
509 | SetStdioPort (CVI_STDIO_WINDOW); |
530 | SetStdioPort (CVI_STDIO_WINDOW); |
510 | SetSleepPolicy(VAL_SLEEP_MORE); |
531 | SetSleepPolicy(VAL_SLEEP_MORE); |
511 | CmtNewThreadPool (MAX_THREADS, &poolHandle); |
532 | CmtNewThreadPool (MAX_THREADS, &poolHandle); |
512 | DisplayPanel (ait); |
533 | DisplayPanel (ait); |
513 | DisplayPanel (xyscan); |
534 | DisplayPanel (xyscan); |
514 | AitInit(); |
535 | AitInit(); |
515 | 536 | ||
516 | 537 | ||
517 | #ifdef MIKRO |
538 | #ifdef MIKRO |
- | 539 | short port; |
|
518 |
|
540 | GetCtrlVal(xyscan, SCAN_PORT, &port); |
519 | if (MIKRO_Open (port)) MessagePopup ("Error", "Mikro Port Not found !\n Change in the GUI") ; |
541 | if (MIKRO_Open (port)) MessagePopup ("Error", "Mikro Port Not found !\n Change in the GUI") ; |
520 | MIKRO_Init(1,0); |
542 | MIKRO_Init(1,0); |
521 | MIKRO_Init(2,0); |
543 | MIKRO_Init(2,0); |
522 | #endif |
544 | #endif |
- | 545 | #ifdef uSMC_USB |
|
- | 546 | uSMC_Open(); |
|
- | 547 | for (int i=0; i<3; i++) { |
|
- | 548 | node[i]=uSMC_FindSerial(serials[i])+1; |
|
- | 549 | uSMC_Init(node[i],1); |
|
- | 550 | } |
|
- | 551 | #endif /* uSMC_USB */ |
|
523 | 552 | ||
524 | 553 | ||
525 | RunUserInterface (); |
554 | RunUserInterface (); |
526 | 555 | ||
527 | #ifdef MIKRO |
556 | #ifdef MIKRO |
528 | MIKRO_Close (); |
557 | MIKRO_Close (); |
529 | #endif |
558 | #endif |
- | 559 | #ifdef uSMC_USB |
|
- | 560 | for (int i=0; i<3; i++) uSMC_PowerOff(node[i]); |
|
- | 561 | uSMC_Close(); |
|
- | 562 | #endif /* uSMC_USB */ |
|
530 | DiscardPanel (ait); |
563 | DiscardPanel (ait); |
531 | DiscardPanel (xyscan); |
564 | DiscardPanel (xyscan); |
532 | return 0; |
565 | return 0; |
533 | } |
566 | } |
534 | 567 | ||
535 | int CVICALLBACK StopCB (int panel, int control, int event, |
568 | int CVICALLBACK StopCB (int panel, int control, int event, |
536 | void *callbackData, int eventData1, int eventData2) { |
569 | void *callbackData, int eventData1, int eventData2) { |
537 | switch (event) { |
570 | switch (event) { |
538 | case EVENT_COMMIT: |
571 | case EVENT_COMMIT: |
539 | daq_on=0; |
572 | daq_on=0; |
540 | break; |
573 | break; |
541 | } |
574 | } |
542 | return 0; |
575 | return 0; |
543 | } |
576 | } |
544 | 577 | ||
545 | 578 | ||
546 | int CVICALLBACK StartCB (int panel, int control, int event, |
579 | int CVICALLBACK StartCB (int panel, int control, int event, |
547 | void *callbackData, int eventData1, int eventData2) { |
580 | void *callbackData, int eventData1, int eventData2) { |
548 | ThreadFunctionPtr mythread = NULL; |
581 | ThreadFunctionPtr mythread = NULL; |
549 | switch (event) { |
582 | switch (event) { |
550 | 583 | ||
551 | case EVENT_COMMIT: |
584 | case EVENT_COMMIT: |
552 | 585 | ||
553 | controlID= control; |
586 | controlID= control; |
554 | if (panel == ait && control == AIT_START) { |
587 | if (panel == ait && control == AIT_START) { |
555 | mythread = daq; |
588 | mythread = daq; |
556 | 589 | ||
557 | } |
590 | } |
558 | if (panel == xyscan && control == SCAN_SCAN) mythread = scan; |
591 | if (panel == xyscan && control == SCAN_SCAN) mythread = scan; |
559 | if (mythread!=NULL) { |
592 | if (mythread!=NULL) { |
560 | printf("New Thread panel=%d button=%d\n", panel, control); |
593 | printf("New Thread panel=%d button=%d\n", panel, control); |
561 | 594 | ||
562 | // SetDimming(1); |
595 | // SetDimming(1); |
563 | 596 | ||
564 | 597 | ||
565 | CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &controlID, |
598 | CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &controlID, |
566 | DEFAULT_THREAD_PRIORITY, |
599 | DEFAULT_THREAD_PRIORITY, |
567 | EndOfThread, |
600 | EndOfThread, |
568 | EVENT_TP_THREAD_FUNCTION_END, |
601 | EVENT_TP_THREAD_FUNCTION_END, |
569 | NULL, RUN_IN_SCHEDULED_THREAD, |
602 | NULL, RUN_IN_SCHEDULED_THREAD, |
570 | &tfID); |
603 | &tfID); |
571 | } |
604 | } |
572 | break; |
605 | break; |
573 | } |
606 | } |
574 | return 0; |
607 | return 0; |
575 | } |
608 | } |
576 | 609 | ||
577 | 610 | ||
578 | 611 | ||
579 | int CVICALLBACK ExitCB (int panel, int control, int event, |
612 | int CVICALLBACK ExitCB (int panel, int control, int event, |
580 | void *callbackData, int eventData1, int eventData2) { |
613 | void *callbackData, int eventData1, int eventData2) { |
581 | switch (event) { |
614 | switch (event) { |
582 | case EVENT_COMMIT: |
615 | case EVENT_COMMIT: |
583 | QuitUserInterface (0); |
616 | QuitUserInterface (0); |
584 | break; |
617 | break; |
585 | } |
618 | } |
586 | return 0; |
619 | return 0; |
587 | } |
620 | } |
588 | 621 | ||
589 | int CVICALLBACK ReadCB (int panel, int control, int event, |
622 | int CVICALLBACK ReadCB (int panel, int control, int event, |
590 | void *callbackData, int eventData1, int eventData2) { |
623 | void *callbackData, int eventData1, int eventData2) { |
591 | switch (event) { |
624 | switch (event) { |
592 | case EVENT_COMMIT: |
625 | case EVENT_COMMIT: |
593 | 626 | ||
594 | 627 | ||
595 | 628 | ||
596 | ReadRegisters(); |
629 | ReadRegisters(); |
597 | break; |
630 | break; |
598 | } |
631 | } |
599 | return 0; |
632 | return 0; |
600 | } |
633 | } |
601 | 634 | ||
602 | int CVICALLBACK ChangeChannelCB (int panel, int control, int event, |
635 | int CVICALLBACK ChangeChannelCB (int panel, int control, int event, |
603 | void *callbackData, int eventData1, int eventData2) { |
636 | void *callbackData, int eventData1, int eventData2) { |
604 | int ch=0; |
637 | int ch=0; |
605 | switch (event) { |
638 | switch (event) { |
606 | case EVENT_COMMIT: |
639 | case EVENT_COMMIT: |
607 | 640 | ||
608 | int logy=0; |
641 | int logy=0; |
609 | GetCtrlVal(ait,AIT_CH, &ch); |
642 | GetCtrlVal(ait,AIT_CH, &ch); |
610 | GetCtrlVal(ait,AIT_LOGY, &logy); |
643 | GetCtrlVal(ait,AIT_LOGY, &logy); |
611 | if (logy){ |
644 | if (logy){ |
612 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG); |
645 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG); |
613 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG); |
646 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG); |
614 | 647 | ||
615 | } else { |
648 | } else { |
616 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR); |
649 | SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR); |
617 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR); |
650 | SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR); |
618 | 651 | ||
619 | } |
652 | } |
620 | H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]); |
653 | H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]); |
621 | break; |
654 | break; |
622 | } |
655 | } |
623 | return 0; |
656 | return 0; |
624 | } |
657 | } |
625 | 658 | ||
626 | 659 | ||
627 | 660 | ||
628 | 661 | ||
629 | 662 | ||
630 | int CVICALLBACK InitCB (int panel, int control, int event, |
663 | int CVICALLBACK InitCB (int panel, int control, int event, |
631 | void *callbackData, int eventData1, int eventData2) { |
664 | void *callbackData, int eventData1, int eventData2) { |
632 | switch (event) { |
665 | switch (event) { |
633 | case EVENT_COMMIT: |
666 | case EVENT_COMMIT: |
634 | AitInit(); |
667 | AitInit(); |
635 | break; |
668 | break; |
636 | } |
669 | } |
637 | return 0; |
670 | return 0; |
638 | } |
671 | } |
639 | 672 | ||
640 | int CVICALLBACK QuickCB (int panel, int control, int event, |
673 | int CVICALLBACK QuickCB (int panel, int control, int event, |
641 | void *callbackData, int eventData1, int eventData2) { |
674 | void *callbackData, int eventData1, int eventData2) { |
642 | switch (event) { |
675 | switch (event) { |
643 | case EVENT_COMMIT: |
676 | case EVENT_COMMIT: |
644 | switch (control) { |
677 | switch (control) { |
645 | case AIT_QUICKSETUP_1: |
678 | case AIT_QUICKSETUP_1: |
646 | QuickSetupContinuous(); |
679 | QuickSetupContinuous(); |
647 | SetCtrlVal(ait,AIT_TRGTYPE, 0); |
680 | SetCtrlVal(ait,AIT_TRGTYPE, 0); |
648 | break; |
681 | break; |
649 | case AIT_QUICKSETUP_2: |
682 | case AIT_QUICKSETUP_2: |
650 | QuickSetupDiscriminator(); |
683 | QuickSetupDiscriminator(); |
651 | SetCtrlVal(ait,AIT_TRGTYPE, 2); |
684 | SetCtrlVal(ait,AIT_TRGTYPE, 2); |
652 | break; |
685 | break; |
653 | case AIT_QUICKSETUP_3: |
686 | case AIT_QUICKSETUP_3: |
654 | QuickSetupTriggerOff(); |
687 | QuickSetupTriggerOff(); |
655 | break; |
688 | break; |
656 | 689 | ||
657 | 690 | ||
658 | } |
691 | } |
659 | float bias = GetHvVoltage(ADDR_HV_VMON); |
692 | float bias = GetHvVoltage(ADDR_HV_VMON); |
660 | SetCtrlVal (panel, AIT_BIASMON, bias); |
693 | SetCtrlVal (panel, AIT_BIASMON, bias); |
661 | double value = GetIntegrationTime(); |
694 | double value = GetIntegrationTime(); |
662 | SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value); |
695 | SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value); |
663 | value = GetThreshold(); |
696 | value = GetThreshold(); |
664 | SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value); |
697 | SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value); |
665 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
698 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
666 | 699 | ||
667 | int ivalue = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
700 | int ivalue = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
668 | ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
701 | ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
669 | SetCtrlVal (panel, AIT_GETADCGAIN, ivalue); |
702 | SetCtrlVal (panel, AIT_GETADCGAIN, ivalue); |
670 | ivalue = |
703 | ivalue = |
671 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
704 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
672 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
705 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
673 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
706 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
674 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
707 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
675 | SetCtrlVal (panel, AIT_GETADCSUMGAIN, ivalue); |
708 | SetCtrlVal (panel, AIT_GETADCSUMGAIN, ivalue); |
676 | break; |
709 | break; |
677 | } |
710 | } |
678 | return 0; |
711 | return 0; |
679 | } |
712 | } |
680 | 713 | ||
681 | 714 | ||
682 | 715 | ||
683 | int CVICALLBACK MoveStageCB (int panel, int control, int event, |
716 | int CVICALLBACK MoveStageCB (int panel, int control, int event, |
684 | void *callbackData, int eventData1, int eventData2) { |
717 | void *callbackData, int eventData1, int eventData2) { |
685 | int axis=0, step=1000, direction=1; |
718 | int axis=0, step=1000, direction=1; |
686 | switch (event) { |
719 | switch (event) { |
687 | case EVENT_COMMIT: |
720 | case EVENT_COMMIT: |
688 | 721 | ||
689 | if (panel == xyscan) { |
722 | if (panel == xyscan) { |
690 | switch (control) { |
723 | switch (control) { |
691 | case SCAN_BR : |
724 | case SCAN_BR : |
692 | axis = 1; |
725 | axis = 1; |
693 | direction = 1; |
726 | direction = 1; |
694 | GetCtrlVal(panel, SCAN_STEPX, &step); |
727 | GetCtrlVal(panel, SCAN_STEPX, &step); |
695 | break; |
728 | break; |
696 | case SCAN_BL : |
729 | case SCAN_BL : |
697 | axis = 1; |
730 | axis = 1; |
698 | direction = -1; |
731 | direction = -1; |
699 | GetCtrlVal(panel, SCAN_STEPX, &step); |
732 | GetCtrlVal(panel, SCAN_STEPX, &step); |
700 | break; |
733 | break; |
701 | case SCAN_BU : |
734 | case SCAN_BU : |
702 | axis = 2; |
735 | axis = 2; |
703 | direction = 1; |
736 | direction = 1; |
704 | GetCtrlVal(panel, SCAN_STEPY, &step); |
737 | GetCtrlVal(panel, SCAN_STEPY, &step); |
705 | break; |
738 | break; |
706 | case SCAN_BD : |
739 | case SCAN_BD : |
707 | axis = 2; |
740 | axis = 2; |
708 | direction = -1; |
741 | direction = -1; |
709 | GetCtrlVal(panel, SCAN_STEPY, &step); |
742 | GetCtrlVal(panel, SCAN_STEPY, &step); |
710 | break; |
743 | break; |
711 | } |
744 | } |
712 | #ifdef MIKRO |
745 | #ifdef MIKRO |
713 | { |
746 | { |
714 | int n=0; |
747 | int n=0; |
715 | MIKRO_MoveFor(axis, direction*step ); |
748 | MIKRO_MoveFor(axis, direction*step ); |
716 | MIKRO_GetPosition(axis,&n); |
749 | MIKRO_GetPosition(axis,&n); |
717 | if (axis == 1) SetCtrlVal (panel, SCAN_XP, n); |
750 | if (axis == 1) SetCtrlVal (panel, SCAN_XP, n); |
718 | if (axis == 2) SetCtrlVal (panel, SCAN_YP, n); |
751 | if (axis == 2) SetCtrlVal (panel, SCAN_YP, n); |
719 | } |
752 | } |
- | 753 | #endif // MIKRO |
|
- | 754 | ||
- | 755 | #ifdef uSMC_USB |
|
- | 756 | { |
|
- | 757 | int n=0; |
|
- | 758 | uSMC_MoveFor(node[axis-1], direction*step ); |
|
- | 759 | uSMC_GetPosition(node[axis-1],&n); |
|
- | 760 | if (axis == 1) SetCtrlVal (panel, SCAN_XP, n); |
|
- | 761 | if (axis == 2) SetCtrlVal (panel, SCAN_YP, n); |
|
- | 762 | } |
|
720 | #endif // MIKRO |
763 | #endif // MIKRO |
721 | } |
764 | } |
722 | 765 | ||
723 | break; |
766 | break; |
724 | } |
767 | } |
725 | return 0; |
768 | return 0; |
726 | } |
769 | } |
727 | 770 | ||
728 | 771 | ||
729 | 772 | ||
730 | 773 | ||
731 | 774 | ||
732 | int CVICALLBACK GoXCB (int panel, int control, int event, |
775 | int CVICALLBACK GoXCB (int panel, int control, int event, |
733 | void *callbackData, int eventData1, int eventData2) { |
776 | void *callbackData, int eventData1, int eventData2) { |
734 | int n2; |
777 | int n2; |
735 | switch (event) { |
778 | switch (event) { |
736 | case EVENT_COMMIT: |
779 | case EVENT_COMMIT: |
737 | GetCtrlVal (panel, SCAN_XG, &n2); |
780 | GetCtrlVal (panel, SCAN_XG, &n2); |
738 | #ifdef MIKRO |
781 | #ifdef MIKRO |
739 | MIKRO_MoveTo(1,n2); |
782 | MIKRO_MoveTo(1,n2); |
740 | MIKRO_GetPosition(1,&n2); |
783 | MIKRO_GetPosition(1,&n2); |
741 | 784 | #endif |
|
- | 785 | #ifdef uSMC_USB |
|
- | 786 | uSMC_MoveTo(node[0],n2); |
|
- | 787 | uSMC_GetPosition(node[0],&n2); |
|
742 | #endif |
788 | #endif |
- | 789 | ||
743 | SetCtrlVal (panel, SCAN_XP, n2); |
790 | SetCtrlVal (panel, SCAN_XP, n2); |
744 | break; |
791 | break; |
745 | } |
792 | } |
746 | return 0; |
793 | return 0; |
747 | } |
794 | } |
748 | 795 | ||
749 | int CVICALLBACK GoYCB (int panel, int control, int event, |
796 | int CVICALLBACK GoYCB (int panel, int control, int event, |
750 | void *callbackData, int eventData1, int eventData2) { |
797 | void *callbackData, int eventData1, int eventData2) { |
751 | int n2; |
798 | int n2; |
752 | switch (event) { |
799 | switch (event) { |
753 | case EVENT_COMMIT: |
800 | case EVENT_COMMIT: |
754 | GetCtrlVal (panel, SCAN_YG, &n2); |
801 | GetCtrlVal (panel, SCAN_YG, &n2); |
755 | #ifdef MIKRO |
802 | #ifdef MIKRO |
756 | MIKRO_MoveTo(2,n2); |
803 | MIKRO_MoveTo(2,n2); |
757 | MIKRO_GetPosition(2,&n2); |
804 | MIKRO_GetPosition(2,&n2); |
758 | 805 | ||
759 | #endif |
806 | #endif |
- | 807 | #ifdef uSMC_USB |
|
- | 808 | uSMC_MoveTo(node[1],n2); |
|
- | 809 | uSMC_GetPosition(node[1],&n2); |
|
- | 810 | #endif |
|
760 | SetCtrlVal (panel, SCAN_YP, n2); |
811 | SetCtrlVal (panel, SCAN_YP, n2); |
761 | break; |
812 | break; |
762 | } |
813 | } |
763 | return 0; |
814 | return 0; |
764 | } |
815 | } |
765 | 816 | ||
766 | int CVICALLBACK GetCurrentPositionCB (int panel, int control, int event, |
817 | int CVICALLBACK GetCurrentPositionCB (int panel, int control, int event, |
767 | void *callbackData, int eventData1, int eventData2) { |
818 | void *callbackData, int eventData1, int eventData2) { |
768 | 819 | ||
769 | 820 | int n[2]; |
|
770 | switch (event) { |
821 | switch (event) { |
771 | case EVENT_COMMIT: { |
822 | case EVENT_COMMIT: { |
772 | #ifdef MIKRO |
823 | #ifdef MIKRO |
773 | int n[2]; |
- | |
774 | MIKRO_GetPosition(1,&n[0]); |
824 | MIKRO_GetPosition(1,&n[0]); |
775 | SetCtrlVal (panel, SCAN_XP, n[0]); |
825 | SetCtrlVal (panel, SCAN_XP, n[0]); |
776 | MIKRO_GetPosition(2,&n[1]); |
826 | MIKRO_GetPosition(2,&n[1]); |
777 | SetCtrlVal (panel, SCAN_YP, n[1]); |
827 | SetCtrlVal (panel, SCAN_YP, n[1]); |
778 | #endif |
828 | #endif |
- | 829 | #ifdef uSMC_USB |
|
- | 830 | uSMC_GetPosition(node[0],&n[0]); |
|
- | 831 | SetCtrlVal (panel, SCAN_XP, n[0]); |
|
- | 832 | uSMC_GetPosition(node[1],&n[1]); |
|
- | 833 | SetCtrlVal (panel, SCAN_YP, n[1]); |
|
- | 834 | #endif |
|
779 | break; |
835 | break; |
780 | } |
836 | } |
781 | } |
837 | } |
782 | return 0; |
838 | return 0; |
783 | } |
839 | } |
784 | 840 | ||
785 | int CVICALLBACK HomeCB (int panel, int control, int event, |
841 | int CVICALLBACK HomeCB (int panel, int control, int event, |
786 | void *callbackData, int eventData1, int eventData2) { |
842 | void *callbackData, int eventData1, int eventData2) { |
787 | switch (event) { |
843 | switch (event) { |
788 | case EVENT_COMMIT: |
844 | case EVENT_COMMIT: |
789 | #ifdef MIKRO |
845 | #ifdef MIKRO |
790 | MIKRO_ReferenceMove(1); |
846 | MIKRO_ReferenceMove(1); |
791 | MIKRO_ReferenceMove(2); |
847 | MIKRO_ReferenceMove(2); |
792 | GetCurrentPositionCB(panel, control, event, NULL, 0, 0); |
848 | GetCurrentPositionCB(panel, control, event, NULL, 0, 0); |
793 | #endif |
849 | #endif |
- | 850 | #ifdef uSMC_USB |
|
- | 851 | //SetCtrlVal(panel,P1_STAGELED,1); |
|
- | 852 | for (int i=0; i<3; i++) uSMC_ReferenceMove(node[i]); |
|
- | 853 | GetCurrentPositionCB(panel, control, event, NULL, 0, 0); |
|
- | 854 | //SetCtrlVal(panel,P1_STAGELED,0); |
|
- | 855 | #endif /* uSMC_USB */ |
|
794 | break; |
856 | break; |
795 | } |
857 | } |
796 | return 0; |
858 | return 0; |
797 | } |
859 | } |
798 | 860 | ||
799 | int CVICALLBACK SetBiasCB (int panel, int control, int event, |
861 | int CVICALLBACK SetBiasCB (int panel, int control, int event, |
800 | void *callbackData, int eventData1, int eventData2) { |
862 | void *callbackData, int eventData1, int eventData2) { |
801 | double bias=0; |
863 | double bias=0; |
802 | switch (event) { |
864 | switch (event) { |
803 | case EVENT_COMMIT: |
865 | case EVENT_COMMIT: |
804 | GetCtrlVal (panel, AIT_BIAS, &bias); |
866 | GetCtrlVal (panel, AIT_BIAS, &bias); |
805 | SetHvVoltage(ADDR_HV_CTRL, bias); |
867 | SetHvVoltage(ADDR_HV_CTRL, bias); |
806 | bias = GetHvVoltage(ADDR_HV_VMON); |
868 | bias = GetHvVoltage(ADDR_HV_VMON); |
807 | SetCtrlVal (panel, AIT_BIASMON, bias); |
869 | SetCtrlVal (panel, AIT_BIASMON, bias); |
808 | break; |
870 | break; |
809 | } |
871 | } |
810 | return 0; |
872 | return 0; |
811 | } |
873 | } |
812 | 874 | ||
813 | int CVICALLBACK SetHvOnCB (int panel, int control, int event, |
875 | int CVICALLBACK SetHvOnCB (int panel, int control, int event, |
814 | void *callbackData, int eventData1, int eventData2) { |
876 | void *callbackData, int eventData1, int eventData2) { |
815 | int state=0; |
877 | int state=0; |
816 | double bias; |
878 | double bias; |
817 | switch (event) { |
879 | switch (event) { |
818 | case EVENT_COMMIT: |
880 | case EVENT_COMMIT: |
819 | GetCtrlVal (panel, control, &state); |
881 | GetCtrlVal (panel, control, &state); |
820 | if (state) SetHvOn(true); |
882 | if (state) SetHvOn(true); |
821 | else SetHvOn(false); |
883 | else SetHvOn(false); |
822 | bias = GetHvVoltage(ADDR_HV_VMON); |
884 | bias = GetHvVoltage(ADDR_HV_VMON); |
823 | SetCtrlVal (panel, AIT_BIASMON, bias); |
885 | SetCtrlVal (panel, AIT_BIASMON, bias); |
824 | break; |
886 | break; |
825 | } |
887 | } |
826 | return 0; |
888 | return 0; |
827 | } |
889 | } |
828 | 890 | ||
829 | int CVICALLBACK SetAdcIntegrationTimeCB (int panel, int control, int event, |
891 | int CVICALLBACK SetAdcIntegrationTimeCB (int panel, int control, int event, |
830 | void *callbackData, int eventData1, int eventData2) { |
892 | void *callbackData, int eventData1, int eventData2) { |
831 | 893 | ||
832 | switch (event) { |
894 | switch (event) { |
833 | case EVENT_COMMIT: { |
895 | case EVENT_COMMIT: { |
834 | double value; |
896 | double value; |
835 | GetCtrlVal (panel, AIT_ADCINTEGRATIONTIME, &value); |
897 | GetCtrlVal (panel, AIT_ADCINTEGRATIONTIME, &value); |
836 | SetIntegrationTime(value); |
898 | SetIntegrationTime(value); |
837 | value = GetIntegrationTime(); |
899 | value = GetIntegrationTime(); |
838 | SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value); |
900 | SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value); |
839 | } |
901 | } |
840 | break; |
902 | break; |
841 | } |
903 | } |
842 | return 0; |
904 | return 0; |
843 | } |
905 | } |
844 | 906 | ||
845 | int CVICALLBACK SetAdcThresholdCB (int panel, int control, int event, |
907 | int CVICALLBACK SetAdcThresholdCB (int panel, int control, int event, |
846 | void *callbackData, int eventData1, int eventData2) { |
908 | void *callbackData, int eventData1, int eventData2) { |
847 | switch (event) { |
909 | switch (event) { |
848 | case EVENT_COMMIT: { |
910 | case EVENT_COMMIT: { |
849 | double value; |
911 | double value; |
850 | GetCtrlVal (panel, AIT_ADCTHRESHOLD, &value); |
912 | GetCtrlVal (panel, AIT_ADCTHRESHOLD, &value); |
851 | SetThreshold(value); |
913 | SetThreshold(value); |
852 | value = GetThreshold(); |
914 | value = GetThreshold(); |
853 | SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value); |
915 | SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value); |
854 | } |
916 | } |
855 | break; |
917 | break; |
856 | } |
918 | } |
857 | return 0; |
919 | return 0; |
858 | } |
920 | } |
859 | 921 | ||
860 | int CVICALLBACK SetAdcGainCB (int panel, int control, int event, |
922 | int CVICALLBACK SetAdcGainCB (int panel, int control, int event, |
861 | void *callbackData, int eventData1, int eventData2) { |
923 | void *callbackData, int eventData1, int eventData2) { |
862 | switch (event) { |
924 | switch (event) { |
863 | case EVENT_COMMIT: { |
925 | case EVENT_COMMIT: { |
864 | int value; |
926 | int value; |
865 | GetCtrlVal (panel, AIT_ADCGAIN, &value); |
927 | GetCtrlVal (panel, AIT_ADCGAIN, &value); |
866 | SetAdcGain(value); |
928 | SetAdcGain(value); |
867 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
929 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
868 | 930 | ||
869 | value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
931 | value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) | |
870 | ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
932 | ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0); |
871 | SetCtrlVal (panel, AIT_GETADCGAIN, value); |
933 | SetCtrlVal (panel, AIT_GETADCGAIN, value); |
872 | } |
934 | } |
873 | break; |
935 | break; |
874 | } |
936 | } |
875 | return 0; |
937 | return 0; |
876 | } |
938 | } |
877 | 939 | ||
878 | int CVICALLBACK SetAdcSumGainCB (int panel, int control, int event, |
940 | int CVICALLBACK SetAdcSumGainCB (int panel, int control, int event, |
879 | void *callbackData, int eventData1, int eventData2) { |
941 | void *callbackData, int eventData1, int eventData2) { |
880 | switch (event) { |
942 | switch (event) { |
881 | case EVENT_COMMIT:{ |
943 | case EVENT_COMMIT:{ |
882 | int value; |
944 | int value; |
883 | GetCtrlVal (panel, AIT_ADCSUMGAIN, &value); |
945 | GetCtrlVal (panel, AIT_ADCSUMGAIN, &value); |
884 | SetSumGain(value); |
946 | SetSumGain(value); |
885 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
947 | int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR); |
886 | value = |
948 | value = |
887 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
949 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) | |
888 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
950 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) | |
889 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
951 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) | |
890 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
952 | ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0); |
891 | SetCtrlVal (panel, AIT_GETADCSUMGAIN, value); |
953 | SetCtrlVal (panel, AIT_GETADCSUMGAIN, value); |
892 | } |
954 | } |
893 | 955 | ||
894 | break; |
956 | break; |
895 | } |
957 | } |
896 | return 0; |
958 | return 0; |
897 | } |
959 | } |
898 | 960 | ||
899 | int CVICALLBACK SetDiscriminatorTypeCB (int panel, int control, int event, |
961 | int CVICALLBACK SetDiscriminatorTypeCB (int panel, int control, int event, |
900 | void *callbackData, int eventData1, int eventData2) { |
962 | void *callbackData, int eventData1, int eventData2) { |
901 | switch (event) { |
963 | switch (event) { |
902 | case EVENT_COMMIT:{ |
964 | case EVENT_COMMIT:{ |
903 | int trgtype; |
965 | int trgtype; |
904 | GetCtrlVal(ait,AIT_TRGTYPE, &trgtype); |
966 | GetCtrlVal(ait,AIT_TRGTYPE, &trgtype); |
905 | EnableTrigger(trgtype); |
967 | EnableTrigger(trgtype); |
906 | } |
968 | } |
907 | break; |
969 | break; |
908 | } |
970 | } |
909 | return 0; |
971 | return 0; |
910 | } |
972 | } |
911 | 973 | ||
912 | int CVICALLBACK ResetCB (int panel, int control, int event, |
974 | int CVICALLBACK ResetCB (int panel, int control, int event, |
913 | void *callbackData, int eventData1, int eventData2) { |
975 | void *callbackData, int eventData1, int eventData2) { |
914 | switch (event) { |
976 | switch (event) { |
915 | case EVENT_COMMIT: |
977 | case EVENT_COMMIT: |
916 | ReconfigureDevice() ; |
978 | ReconfigureDevice() ; |
917 | ReconnectDevice(); |
979 | ReconnectDevice(); |
918 | //ResetDevice() ; |
980 | //ResetDevice() ; |
919 | break; |
981 | break; |
920 | } |
982 | } |
921 | return 0; |
983 | return 0; |
922 | } |
984 | } |
923 | 985 | ||
924 | int CVICALLBACK OpenScanCB (int panel, int control, int event, |
986 | int CVICALLBACK OpenScanCB (int panel, int control, int event, |
925 | void *callbackData, int eventData1, int eventData2) { |
987 | void *callbackData, int eventData1, int eventData2) { |
926 | switch (event) { |
988 | switch (event) { |
927 | case EVENT_COMMIT: |
989 | case EVENT_COMMIT: |
928 | DisplayPanel (xyscan); |
990 | DisplayPanel (xyscan); |
929 | break; |
991 | break; |
930 | } |
992 | } |
931 | return 0; |
993 | return 0; |
932 | } |
994 | } |
933 | 995 | ||
934 | int CVICALLBACK OpenMainCB (int panel, int control, int event, |
996 | int CVICALLBACK OpenMainCB (int panel, int control, int event, |
935 | void *callbackData, int eventData1, int eventData2) { |
997 | void *callbackData, int eventData1, int eventData2) { |
936 | switch (event) { |
998 | switch (event) { |
937 | case EVENT_COMMIT: |
999 | case EVENT_COMMIT: |
938 | DisplayPanel (ait); |
1000 | DisplayPanel (ait); |
939 | break; |
1001 | break; |
940 | } |
1002 | } |
941 | return 0; |
1003 | return 0; |
942 | } |
1004 | } |
943 | 1005 |