Subversion Repositories f9daq

Rev

Rev 280 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
280 f9daq 1
#include <userint.h>
2
#include "pw18-1.8aq-ctrl.h"
3
#include <stdlib.h>
4
#include <stdio.h>
5
#include <windows.h>
6
#include <pw18-1.8aq.h> 
7
 
8
int TMI_DeviceId=0;
9
 
10
 
11
 
12
 
13
 
14
int TMI_Initialize()
15
{
16
 
17
        TMI_HandleOpen          = NULL;
18
        TMI_HandleClose         = NULL;
19
        TMI_TimeOut                     = NULL;
20
        TMI_Refresh                     = NULL;
21
        TMI_ModelNameQ          = NULL;
22
        TMI_Voltage                     = NULL;
23
        TMI_VoltageQ                    = NULL;
24
        TMI_Current                     = NULL;
25
        TMI_CurrentQ                    = NULL;
26
        TMI_MainOutput          = NULL;
27
        TMI_MainOutputQ         = NULL;
28
        TMI_Delay                               = NULL;
29
        TMI_DelayQ                      = NULL;
30
        TMI_OutputSel                   = NULL;
31
        TMI_OutputSelQ          = NULL;
32
        TMI_TrackingOnOff               = NULL;
33
        TMI_TrackingOnOffQ      = NULL;
34
        TMI_TrackingMode                = NULL;
35
        TMI_TrackingModeQ               = NULL;
36
        TMI_TrackingGroup               = NULL;
37
        TMI_TrackingGroupQ      = NULL;
38
        TMI_TrackingData                = NULL;
39
        TMI_TrackingDataQ               = NULL;
40
        TMI_DelayTime                   = NULL;
41
        TMI_DelayTimeQ          = NULL;
42
        TMI_Display                     = NULL;
43
        TMI_DisplayQ                    = NULL;
44
        TMI_Preset                      = NULL;
45
        TMI_PresetQ                     = NULL;
46
        TMI_MoniDataQ                   = NULL;
47
        TMI_AdrQ                                = NULL;
48
        TMI_RemoteLocal         = NULL;
49
        TMI_LocalLockOut                = NULL;
50
        TMI_DataBackUp          = NULL;
51
        TMI_SRQEnable                   = NULL;
52
        TMI_AllPresetQ          = NULL;
53
        TMI_AllPresetQS         = NULL;
54
        TMI_Out                         = NULL;
55
        TMI_In                          = NULL;
56
        return 0;
57
}
58
 
59
 
60
int TMI_Test()
61
{
62
        char str[0xFF];
63
        if (TMI_HandleOpen              == NULL ) return FALSE;
64
        if (TMI_HandleClose             == NULL ) return FALSE;
65
  if (TMI_TimeOut                       == NULL ) return FALSE;
66
        if (TMI_Refresh                 == NULL ) return FALSE;
67
        if (TMI_ModelNameQ              == NULL ) return FALSE;
68
        if (TMI_Voltage                 == NULL ) return FALSE;
69
        if (TMI_VoltageQ                        == NULL ) return FALSE;
70
        if (TMI_Current                 == NULL ) return FALSE;
71
        if (TMI_CurrentQ                        == NULL ) return FALSE;
72
        if (TMI_MainOutput              == NULL ) return FALSE;
73
        if (TMI_MainOutputQ             == NULL ) return FALSE;
74
        if (TMI_Delay                           == NULL ) return FALSE;
75
        if (TMI_DelayQ                  == NULL ) return FALSE;
76
        if (TMI_OutputSel                       == NULL ) return FALSE;
77
        if (TMI_OutputSelQ              == NULL ) return FALSE;
78
        if (TMI_TrackingOnOff           == NULL ) return FALSE;
79
        if (TMI_TrackingOnOffQ  == NULL ) return FALSE;
80
        if (TMI_TrackingMode            == NULL ) return FALSE;
81
        if (TMI_TrackingModeQ           == NULL ) return FALSE;
82
        if (TMI_TrackingGroup           == NULL ) return FALSE;
83
        if (TMI_TrackingGroupQ  == NULL ) return FALSE;
84
        if (TMI_TrackingData            == NULL ) return FALSE;
85
        if (TMI_TrackingDataQ           == NULL ) return FALSE;
86
        if (TMI_DelayTime                       == NULL ) return FALSE;
87
        if (TMI_DelayTimeQ              == NULL ) return FALSE;
88
        if (TMI_Display                 == NULL ) return FALSE;
89
        if (TMI_DisplayQ                        == NULL ) return FALSE;
90
        if (TMI_Preset                  == NULL ) return FALSE;
91
        if (TMI_PresetQ                 == NULL ) return FALSE;
92
        if (TMI_MoniDataQ                       == NULL ) return FALSE;
93
        if (TMI_AdrQ                            == NULL ) return FALSE;
94
        if (TMI_RemoteLocal             == NULL ) return FALSE;
95
        if (TMI_LocalLockOut            == NULL ) return FALSE;
96
        if (TMI_DataBackUp              == NULL ) return FALSE;
97
        if (TMI_SRQEnable                       == NULL ) return FALSE;
98
        if (TMI_AllPresetQ              == NULL ) return FALSE;
99
        if (TMI_AllPresetQS             == NULL ) return FALSE;
100
        if (TMI_Out                             == NULL ) return FALSE;
101
        if (TMI_In                              == NULL ) return FALSE;
102
  TMI_ModelNameQ(TMI_DeviceId, str);
103
  printf("TMI_ModelNameQ %s\n",str);
104
        return TRUE;
105
}
106
 
107
int TMI_Close()
108
{
109
 
110
 
111
        if(TMI_APIDll != NULL) {
112
        if (TMI_DeviceId){
113
 
114
      TMI_RemoteLocal(TMI_DeviceId);
115
      TMI_HandleClose(TMI_DeviceId);
116
      TMI_DeviceId = 0;
117
        }  
118
                FreeLibrary(TMI_APIDll);
119
        }
120
        return 0;
121
}
122
 
123
int TMI_Open()
124
{
125
        TMI_Initialize();
126
  printf("FALSE =%d TRUE=%d\n", FALSE, TRUE);
127
        TMI_APIDll=LoadLibrary((LPCSTR)"TMI_API.dll");
128
        if( TMI_APIDll == NULL )
129
                return FALSE;
130
 
131
        TMI_HandleOpen = (int  ( __stdcall*  )( char * , char * )) GetProcAddress(TMI_APIDll , "TMI_HandleOpen");
132
        if( TMI_HandleOpen == NULL )
133
           return FALSE;
134
 
135
        TMI_TimeOut = (int  ( __stdcall*  )( int , int )) GetProcAddress(TMI_APIDll , "TMI_TimeOut");
136
        if( TMI_TimeOut == NULL )
137
                return FALSE;
138
 
139
        TMI_Refresh = (int  ( __stdcall*  )( int )) GetProcAddress(TMI_APIDll , "TMI_Refresh");
140
        if( TMI_Refresh == NULL )
141
                return FALSE;
142
 
143
        TMI_ModelNameQ = (int  ( __stdcall*  )( int , char * )) GetProcAddress(TMI_APIDll , "TMI_ModelNameQ");
144
        if( TMI_ModelNameQ == NULL )                            
145
                return FALSE;
146
 
147
        TMI_Voltage = (int  ( __stdcall*  )( int , unsigned char , unsigned char , double )) GetProcAddress(TMI_APIDll , "TMI_Voltage");
148
        if( TMI_Voltage == NULL )
149
                return FALSE;
150
 
151
        TMI_VoltageQ = (int  ( __stdcall*  )( int , unsigned char , unsigned char , double * )) GetProcAddress(TMI_APIDll , "TMI_VoltageQ");
152
        if( TMI_VoltageQ == NULL )
153
                return FALSE;
154
 
155
        TMI_Current = (int  ( __stdcall*  )(int , unsigned char , unsigned char , double )) GetProcAddress(TMI_APIDll , "TMI_Current");
156
        if( TMI_Current == NULL )
157
                return FALSE;
158
 
159
        TMI_CurrentQ = (int  ( __stdcall*  )(int , unsigned char , unsigned char , double * )) GetProcAddress(TMI_APIDll , "TMI_CurrentQ");
160
        if( TMI_CurrentQ == NULL )
161
                return FALSE;
162
 
163
        TMI_MainOutput = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_MainOutput");
164
        if( TMI_MainOutput == NULL )
165
                return FALSE;
166
 
167
        TMI_MainOutputQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_MainOutputQ");
168
        if( TMI_MainOutputQ == NULL )
169
                return FALSE;
170
 
171
        TMI_Delay = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_Delay");
172
        if( TMI_Delay == NULL )
173
                return FALSE;
174
 
175
        TMI_DelayQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_DelayQ");
176
        if( TMI_DelayQ == NULL )
177
                return FALSE;
178
 
179
        TMI_OutputSel = (int  ( __stdcall*  )(int , unsigned char , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_OutputSel");
180
        if( TMI_OutputSel == NULL )
181
                return FALSE;
182
 
183
        TMI_OutputSelQ = (int  ( __stdcall*  )(int , unsigned char , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_OutputSelQ");
184
        if( TMI_OutputSelQ == NULL )
185
                return FALSE;
186
 
187
        TMI_TrackingOnOff = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_TrackingOnOff");
188
        if( TMI_TrackingOnOff == NULL )
189
                return FALSE;
190
 
191
        TMI_TrackingOnOffQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_TrackingOnOffQ");
192
        if( TMI_TrackingOnOffQ == NULL )
193
                return FALSE;
194
 
195
        TMI_TrackingMode = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_TrackingMode");
196
        if( TMI_TrackingMode == NULL )
197
                return FALSE;
198
 
199
        TMI_TrackingModeQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_TrackingModeQ");
200
        if( TMI_TrackingModeQ == NULL )
201
                return FALSE;
202
 
203
        TMI_TrackingGroup = (int  ( __stdcall*  )(int , unsigned char , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_TrackingGroup");
204
        if( TMI_TrackingGroup == NULL )
205
                return FALSE;
206
 
207
        TMI_TrackingGroupQ = (int  ( __stdcall*  )(int , unsigned char , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_TrackingGroupQ");
208
        if( TMI_TrackingGroupQ == NULL )
209
                return FALSE;
210
 
211
        TMI_TrackingData = (int  ( __stdcall*  )(int , unsigned char , unsigned char , double )) GetProcAddress(TMI_APIDll , "TMI_TrackingData");
212
        if( TMI_TrackingData == NULL )
213
                return FALSE;
214
 
215
        TMI_TrackingDataQ = (int  ( __stdcall*  )(int , unsigned char , unsigned char , double * )) GetProcAddress(TMI_APIDll , "TMI_TrackingDataQ");
216
        if( TMI_TrackingDataQ == NULL )
217
                return FALSE;
218
 
219
        TMI_DelayTime = (int  ( __stdcall*  )(int , unsigned char , double )) GetProcAddress(TMI_APIDll , "TMI_DelayTime");
220
        if( TMI_DelayTime == NULL )
221
                return FALSE;
222
 
223
        TMI_DelayTimeQ = (int  ( __stdcall*  )(int , unsigned char , double * )) GetProcAddress(TMI_APIDll , "TMI_DelayTimeQ");
224
        if( TMI_DelayTimeQ == NULL )
225
                return FALSE;
226
 
227
        TMI_Display = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_Display");
228
        if( TMI_Display == NULL )
229
                return FALSE;
230
 
231
        TMI_DisplayQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_DisplayQ");
232
        if( TMI_DisplayQ == NULL )
233
                return FALSE;
234
 
235
        TMI_Preset = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_Preset");
236
        if( TMI_Preset == NULL )
237
                return FALSE;
238
 
239
        TMI_PresetQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_PresetQ");
240
        if( TMI_PresetQ == NULL )
241
                return FALSE;
242
 
243
        TMI_MoniDataQ = (int  ( __stdcall*  )(int , char , double * , double * , char * )) GetProcAddress(TMI_APIDll , "TMI_MoniDataQ");
244
        if( TMI_MoniDataQ == NULL )
245
                return FALSE;
246
 
247
        TMI_AdrQ = (int  ( __stdcall*  )(int , unsigned char * )) GetProcAddress(TMI_APIDll , "TMI_AdrQ");
248
        if( TMI_AdrQ == NULL )
249
                return FALSE;
250
 
251
        TMI_RemoteLocal = (int  ( __stdcall*  )(int )) GetProcAddress(TMI_APIDll , "TMI_RemoteLocal");
252
        if( TMI_RemoteLocal == NULL )
253
                return FALSE;
254
 
255
        TMI_LocalLockOut = (int  ( __stdcall*  )(int )) GetProcAddress(TMI_APIDll , "TMI_LocalLockOut");
256
        if( TMI_LocalLockOut == NULL )
257
                return FALSE;
258
 
259
        TMI_DataBackUp = (int  ( __stdcall*  )(int )) GetProcAddress(TMI_APIDll , "TMI_DataBackUp");
260
        if( TMI_DataBackUp == NULL )
261
                return FALSE;
262
 
263
        TMI_SRQEnable = (int  ( __stdcall*  )(int , unsigned char )) GetProcAddress(TMI_APIDll , "TMI_SRQEnable");
264
        if( TMI_SRQEnable == NULL )
265
                return FALSE;
266
 
267
        TMI_AllPresetQ = (int  ( __stdcall*  )(int , double * )) GetProcAddress(TMI_APIDll , "TMI_AllPresetQ");
268
        if( TMI_AllPresetQ == NULL )
269
                return FALSE;
270
 
271
        TMI_AllPresetQS = (int  ( __stdcall*  )(int , char * )) GetProcAddress(TMI_APIDll , "TMI_AllPresetQS");
272
        if( TMI_AllPresetQS == NULL )
273
                return FALSE;
274
 
275
        TMI_Out = (int  ( __stdcall*  )(int , char * )) GetProcAddress(TMI_APIDll , "TMI_Out");
276
        if( TMI_Out == NULL )
277
                return FALSE;
278
 
279
        TMI_In = (int  ( __stdcall*  )(int , char * )) GetProcAddress(TMI_APIDll , "TMI_In");
280
        if( TMI_In == NULL )
281
                return FALSE;
282
 
283
  TMI_HandleClose = (int  ( __stdcall*  )( int )) GetProcAddress(TMI_APIDll , "TMI_HandleClose");
284
        if( TMI_HandleClose == NULL )
285
                return FALSE;
286
 
287
  printf("TMI_In loaded.\n");
288
        return TRUE;
289
}
290
 
291
int TMI_OpenHandle(char * dev, char * usb   ){
292
 
293
TMI_DeviceId =  TMI_HandleOpen(dev, usb);
294
return TMI_DeviceId;
295
}
296
 
297
 
298
 
299
 
300
/****************TOKOVI (potek, kako se spreminjajo tokovi s casom)****************/
301
 
302
void TMI_ReadCurrent(double * I , double * V, unsigned char * mode, unsigned char *onoff){
303
         int iRet;
304
         char ch=0;
305
         double Voltage;
306
     double Current;
307
         char cv_cc;
308
 
309
 
310
         iRet = TMI_TimeOut(TMI_DeviceId, 1);
311
         iRet = TMI_Refresh(TMI_DeviceId);
312
 
313
 
314
         //iRet = TMI_MainOutput(TMI_DeviceId, Output);
315
     //iRet = TMI_MainOutputQ(TMI_DeviceId, &Output);
316
         for (ch=0;ch<4;ch++){
317
 
318
 
319
           iRet = TMI_MoniDataQ(TMI_DeviceId, ch+1, &Voltage, &Current, &cv_cc);
320
           //if (debug) printf("[%d] %g V %g A CVCC %d\t",ch, Voltage, Current, cv_cc ); 
321
           I[ch]= Current;        //s tem definiras kaj sta I in V.
322
           V[ch]= Voltage;
323
 
324
 
325
         }
326
         //if (debug) printf("\n");
327
 
328
 
329
        return;
330
 
331
 
332
}
333
 
334
 
335
#ifdef MAIN 
336
 
337
#include <ansi_c.h>
338
#include <utility.h>
339
#include "pw18-1.8aq-ctrl.h"
340
 
341
#define RSTREG(a,x) (a&=(~(x)))
342
#define SETREG(a,x) (a|=x)
343
 
344
int gLogToFile;
345
int vmon[4]={P1_VMON_1,P1_VMON_2,P1_VMON_3,P1_VMON_4 };
346
int imon[4]={P1_IMON_1,P1_IMON_2,P1_IMON_3,P1_IMON_4 };
347
int vset[4]={P1_U_1,P1_U_2,P1_U_3,P1_U_4 };
348
int iset[4]={P1_I_1,P1_I_2,P1_I_3,P1_I_4 };
349
int radiob[4]={P1_BOX_1,P1_BOX_2,P1_BOX_3,P1_BOX_4 };
350
 
351
int cvcc[4]={P1_CVCC_1,P1_CVCC_2,P1_CVCC_3,P1_CVCC_4 };
297 f9daq 352
 
280 f9daq 353
int gMask=0xF;
354
 
355
int pnl;
356
FILE *gFp;
357
int main (int argc, char *argv[])
358
{
359
        int DeviceId=0;
297 f9daq 360
        unsigned char MainOutput, preset;
280 f9daq 361
  double Voltage, Current, tinterval;
362
  char str[0xFF];
363
        if (InitCVIRTE (0, argv, 0) == 0)
364
                return -1;      /* out of memory */
365
  SetStdioPort (CVI_STDIO_WINDOW);
366
        if ((pnl = LoadPanel (0, "pw18-1.8aq-ctrl.uir", P1)) < 0) return -1;
367
 
368
  if (TMI_Open()== 0) MessagePopup("Error","Cannot open USB device");  
369
  DeviceId = TMI_OpenHandle ("PW-A","USB:1:1");
370
  if (TMI_Test() == 0 )MessagePopup("DLL error","Dll Error");
371
  if (DeviceId < 0) MessagePopup("Error","Not Connected");
372
  printf("TMI device ID %d\n",TMI_DeviceId);
373
 
374
  TMI_MainOutputQ(TMI_DeviceId, &MainOutput);
375
  SetCtrlVal(pnl, P1_ONOFF, MainOutput);
376
  GetCtrlVal(pnl, P1_TINTERVAL, &tinterval);
377
  SetCtrlAttribute (pnl, P1_TIMER, ATTR_INTERVAL, tinterval);
297 f9daq 378
        TMI_PresetQ(TMI_DeviceId, &preset);
379
  SetCtrlVal(pnl, P1_PRESET, preset);
380
        SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 1, ATTR_TRACE_LG_TEXT, "CH +18V");
381
        SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 2, ATTR_TRACE_LG_TEXT, "CH -18V");
382
        SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 3, ATTR_TRACE_LG_TEXT, "CH +6V");
383
        SetTraceAttributeEx (pnl, P1_GRAPH_IMON, 4, ATTR_TRACE_LG_TEXT, "CH -6V");
384
 
385
        SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 1, ATTR_TRACE_LG_TEXT, "CH +18V");
386
        SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 2, ATTR_TRACE_LG_TEXT, "CH -18V");
387
        SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 3, ATTR_TRACE_LG_TEXT, "CH +6V");
388
        SetTraceAttributeEx (pnl, P1_GRAPH_VMON, 4, ATTR_TRACE_LG_TEXT, "CH -6V");
280 f9daq 389
  for (unsigned char  ch=0;ch<4;ch++){
390
    int ison;
297 f9daq 391
    TMI_VoltageQ(TMI_DeviceId, ch+1, preset, &Voltage);
392
    TMI_CurrentQ(TMI_DeviceId, ch+1, preset, &Current);
280 f9daq 393
    SetCtrlVal(pnl, vset[ch], Voltage);
394
    SetCtrlVal(pnl, iset[ch], Current);
395
    GetCtrlVal(pnl, radiob[ch], &ison);
396
    if (ison) SETREG(gMask,(1<<ch)); else RSTREG(gMask,(1<<ch));
397
  }
398
 
399
  DisplayPanel (pnl);
400
        RunUserInterface ();
401
        DiscardPanel (pnl);
402
   TMI_Close();
403
 
404
   if (gFp)  fclose(gFp);
405
        return 0;
406
}
407
 
408
 
409
 
410
 
411
int CVICALLBACK SwitchOnOffCB (int panel, int control, int event,
412
                               void *callbackData, int eventData1, int eventData2)
413
{
414
  unsigned char state;
415
  switch (event)
416
  {
417
    case EVENT_COMMIT:
418
      GetCtrlVal(panel, control, &state);
419
      TMI_MainOutput(TMI_DeviceId, state);
420
      break;
421
  }
422
  return 0;
423
}
424
 
425
int CVICALLBACK SetCB (int panel, int control, int event,
426
                       void *callbackData, int eventData1, int eventData2)
427
{
428
 
429
 
430
  switch (event)
431
  {
297 f9daq 432
    case EVENT_COMMIT:{
433
                        unsigned char preset;
434
      TMI_PresetQ(TMI_DeviceId, &preset);
435
      SetCtrlVal(pnl, P1_PRESET, preset);  
280 f9daq 436
      for (unsigned char ch = 0; ch<4;ch++){
437
        //printf("ch %d %x\n", ch, gMask);
438
        if (gMask & (1<<ch)){
439
          double Voltage;
440
          double Current;
297 f9daq 441
 
280 f9daq 442
          GetCtrlVal(panel, vset[ch], &Voltage);
443
          GetCtrlVal(panel, iset[ch], &Current);
297 f9daq 444
          //printf("->ch %d VSet %g Iset %g\n", ch, Voltage, Current);
445
          TMI_Voltage(TMI_DeviceId, ch+1, preset, Voltage);
446
          TMI_VoltageQ(TMI_DeviceId, ch+1, preset, &Voltage);
447
          TMI_Current(TMI_DeviceId, ch+1, preset, Current);
448
          TMI_CurrentQ(TMI_DeviceId, ch+1, preset, &Current);
449
          //printf("<-ch %d VSet %g Iset %g\n", ch, Voltage, Current);  
280 f9daq 450
 
451
        }
452
      }  
297 f9daq 453
                }
280 f9daq 454
      break;
455
  }
456
  return 0;
457
}
458
 
459
int CVICALLBACK ReadCB (int panel, int control, int event,
460
                        void *callbackData, int eventData1, int eventData2)
461
{
462
 
463
   int iRet;
464
         char ch=0;
465
         double Voltage;
466
   double Current;
467
         char cv_cc;
468
  switch (event)
469
  {
470
    case EVENT_COMMIT:
471
      for (ch = 0; ch<4;ch++){
472
        if (gMask & (1<<ch)){
473
          iRet = TMI_TimeOut(TMI_DeviceId, 1);
474
                iRet = TMI_Refresh(TMI_DeviceId);
475
          iRet = TMI_MoniDataQ(TMI_DeviceId, ch+1, &Voltage, &Current, &cv_cc);
297 f9daq 476
          //printf("ch %d VSet %g Iset %g\n", ch, Voltage, Current); 
280 f9daq 477
          SetCtrlVal(panel, vmon[ch], Voltage);
478
          SetCtrlVal(panel, imon[ch], Current);
479
          SetCtrlVal(panel, cvcc[ch], cv_cc);
480
        }
481
      }  
482
      break;
483
  }
484
  return 0;
485
}
486
 
487
int CVICALLBACK SetIntervalCB (int panel, int control, int event,
488
                               void *callbackData, int eventData1, int eventData2) {
489
  double tinterval;
490
  switch (event) {
491
    case EVENT_COMMIT:
492
      GetCtrlVal(panel, control, &tinterval);
493
      SetCtrlAttribute (panel, P1_TIMER, ATTR_INTERVAL, tinterval);
494
      break;
495
  }
496
  return 0;
497
}
498
 
499
int CVICALLBACK TimerOnOffCB (int panel, int control, int event,
500
                              void *callbackData, int eventData1, int eventData2)
501
{
502
  int state;
503
  switch (event)
504
  {
505
    case EVENT_COMMIT:
506
      GetCtrlVal(panel, control, &state);
507
      if (state){
508
         ResumeTimerCallbacks();
509
      } else {
510
         SuspendTimerCallbacks ();
511
         printf ("Disabling timer....\n");
512
      }
513
      break;
514
  }
515
  return 0;
516
}
517
 
518
int CVICALLBACK ExitCB (int panel, int control, int event,
519
                        void *callbackData, int eventData1, int eventData2)
520
{
521
  switch (event)
522
  {
523
    case EVENT_COMMIT:
524
      QuitUserInterface(0);
525
      break;
526
  }
527
  return 0;
528
}
529
 
530
int CVICALLBACK SetMaskCB (int panel, int control, int event,
531
                           void *callbackData, int eventData1, int eventData2)
532
{ int ison;
533
  switch (event)
534
  {
535
    case EVENT_COMMIT:
536
      GetCtrlVal(panel, control, &ison);
537
      for (int i=0;i<4;i++) if (control == radiob[i]) break;
538
      if (ison) SETREG(gMask,(1<<i)); else RSTREG(gMask,(1<<i));
539
      break;
540
  }
541
  return 0;
542
}
543
 
544
int CVICALLBACK LogToFileCB (int panel, int control, int event,
545
                             void *callbackData, int eventData1, int eventData2)
546
{
547
 
548
  switch (event)
549
  {
550
    case EVENT_COMMIT:
551
      GetCtrlVal(panel, control, &gLogToFile);
552
 
553
      break;
554
  }
555
  return 0;
556
}
557
 
558
int CVICALLBACK TimerCB (int panel, int control, int event,
559
                         void *callbackData, int eventData1, int eventData2)
560
{
561
  switch (event)
562
  {
563
 
564
      unsigned char   ch;
565
      double current[4];
297 f9daq 566
      double voltage[4];
280 f9daq 567
      char cv_cc;
568
    case EVENT_TIMER_TICK:
569
      for (ch = 0; ch<4;ch++){
570
        if (gMask & (1<<ch)){
571
          TMI_TimeOut(TMI_DeviceId, 1);
572
                TMI_Refresh(TMI_DeviceId);
297 f9daq 573
          TMI_MoniDataQ(TMI_DeviceId, ch+1, &voltage[ch], &current[ch], &cv_cc);
574
          SetCtrlVal(panel, vmon[ch], voltage[ch]);
280 f9daq 575
          SetCtrlVal(panel, imon[ch], current[ch]);
576
          SetCtrlVal(panel, cvcc[ch], cv_cc);
577
          if (gLogToFile){
578
              if (!gFp)  {
579
                gFp= fopen("pw18-1.8aq.log","w");
580
                fprintf(gFp,"#time\tch\tU\tI\tCV_CC\n");
581
              }  
297 f9daq 582
              fprintf(gFp,"%ul\t%d\t%g\t%g\t%d\n",  time(NULL), ch+1, voltage[ch], current[ch], cv_cc);
280 f9daq 583
          }
584
        }
585
      }
297 f9daq 586
      PlotStripChart (panel, P1_GRAPH_IMON, current, 4, 0, 0, VAL_DOUBLE);
587
                        PlotStripChart (panel, P1_GRAPH_VMON, voltage, 4, 0, 0, VAL_DOUBLE);
280 f9daq 588
      break;
589
  }
590
  return 0;
591
}
297 f9daq 592
 
593
int CVICALLBACK SetPresetCB (int panel, int control, int event,
594
                                                                                                                 void *callbackData, int eventData1, int eventData2) {
595
 
596
        switch (event) {
597
                case EVENT_COMMIT:{
598
                        unsigned char preset;
599
                        double Voltage, Current;
600
                        GetCtrlVal(panel, control, &preset);
601
                        TMI_Preset(TMI_DeviceId, preset);
602
 
603
                        for (unsigned char  ch=0;ch<4;ch++){
604
        int ison;
605
        TMI_VoltageQ(TMI_DeviceId, ch+1, preset, &Voltage);
606
        TMI_CurrentQ(TMI_DeviceId, ch+1, preset, &Current);
607
        SetCtrlVal(pnl, vset[ch], Voltage);
608
        SetCtrlVal(pnl, iset[ch], Current);
609
        GetCtrlVal(pnl, radiob[ch], &ison);
610
        if (ison) SETREG(gMask,(1<<ch)); else RSTREG(gMask,(1<<ch));
611
      }
612
                        break;
613
                }
614
        }
615
        return 0;
616
}
617
 
618
 
280 f9daq 619
#endif MAIN 
620