Subversion Repositories f9daq

Rev

Rev 354 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 354 Rev 356
Line 11... Line 11...
11
#include <math.h>
11
#include <math.h>
12
 
12
 
13
//stepping motor busheng --> declaration 1step=1.8degrees
13
//stepping motor busheng --> declaration 1step=1.8degrees
14
//experimantally: full rotation = 3200 steps (on setting 1step/mm ($100))
14
//experimantally: full rotation = 3200 steps (on setting 1step/mm ($100))
15
 
15
 
16
 
16
// PORTS
17
int pCOM1 = 6;
17
int pCOM1 = 6;
18
int pCOM2 = 7;
18
int pCOM2 = 7;
-
 
19
char GRBL[10] = "COM8";         //BE CAREFUL, IT'S IMPORTANT TO KNOW THE NAME OF THE PORTS
-
 
20
char ADC[10] = "COM7";
19
 
21
 
20
int run, graph, f_t, ji, vi, run1;
22
int run, graph, chart, ji, vi, run1;
21
int left_1, right_1;
23
int left_1, right_1;
22
 
24
 
23
static int panel, tfID, tfID1;
25
static int panel, tfID, tfID1;
24
static int poolHandle = 0;
26
static int poolHandle = 0;
25
 
27
 
Line 36... Line 38...
36
 
38
 
37
 
39
 
38
void initialize()
40
void initialize()
39
{
41
{
40
        // Open grbl serial port //("COM6",115200)
42
        // Open grbl serial port //("COM6",115200)
41
        OpenComConfig (pCOM1, "COM6", 115200, 0, 8, 1, 512, 512);
43
        OpenComConfig (pCOM1, GRBL, 115200, 0, 8, 1, 512, 512);
42
 
44
 
43
        /*      Turn off Hardware handshaking (loopback test will not function with it on) */
45
        /*      Turn off Hardware handshaking (loopback test will not function with it on) */
44
        SetCTSMode (pCOM1, LWRS_HWHANDSHAKE_OFF);
46
        SetCTSMode (pCOM1, LWRS_HWHANDSHAKE_OFF);
45
 
47
 
46
        ComWrt (pCOM1, "\r\n\r\n", 5);          //Writing on Port
48
        ComWrt (pCOM1, "\r\n\r\n", 5);          //Writing on Port
Line 119... Line 121...
119
}
121
}
120
 
122
 
121
 
123
 
122
void initialize_voltage()
124
void initialize_voltage()
123
{
125
{
124
        // Open serial port for photodetector - reading is on chanel A1
126
        // Open serial port for ADC & photodetector - reading is on chanel A1
125
        OpenComConfig (pCOM2, "COM7", 115200, 0, 8, 1, 512, 512);
127
        OpenComConfig (pCOM2, ADC, 115200, 0, 8, 1, 512, 512);
126
        SetCTSMode (pCOM2, LWRS_HWHANDSHAKE_OFF);
128
        SetCTSMode (pCOM2, LWRS_HWHANDSHAKE_OFF);
127
 
129
 
128
        Delay(0.5);
130
        Delay(0.5);
129
        FlushInQ (pCOM2);
131
        FlushInQ (pCOM2);
130
        FlushOutQ (pCOM2);
132
        FlushOutQ (pCOM2);
Line 173... Line 175...
173
 
175
 
174
        int strLen3 = GetInQLen (pCOM1);
176
        int strLen3 = GetInQLen (pCOM1);
175
        bytes_read3 = ComRd (pCOM1, read_data3, strLen3);
177
        bytes_read3 = ComRd (pCOM1, read_data3, strLen3);
176
        //printf("  :\n%s", read_data3);
178
        //printf("  :\n%s", read_data3);
177
        //printf("bytes_read = %d\n\n", bytes_read3);
179
        //printf("bytes_read = %d\n\n", bytes_read3);
178
        FlushInQ (pCOM1);
180
        FlushInQ (pCOM1);
179
 
181
 
180
}
182
}
181
 
183
 
182
 
184
 
183
static int CVICALLBACK daq_run(void *functionData)
185
static int CVICALLBACK daq_run(void *functionData)
184
{
186
{
185
 
187
 
Line 293... Line 295...
293
                //for(int i=0;i<j;i++) printf("volt_g[%d] = %lf\n",i,volt_g[i]);
295
                //for(int i=0;i<j;i++) printf("volt_g[%d] = %lf\n",i,volt_g[i]);
294
                if (graph>0) DeleteGraphPlot (panel, p1_VOLTAGE_GRAPH, graph, VAL_DELAYED_DRAW);
296
                if (graph>0) DeleteGraphPlot (panel, p1_VOLTAGE_GRAPH, graph, VAL_DELAYED_DRAW);
295
                graph = PlotY (panel, p1_VOLTAGE_GRAPH, &volt_g[0], num_points, VAL_DOUBLE,
297
                graph = PlotY (panel, p1_VOLTAGE_GRAPH, &volt_g[0], num_points, VAL_DOUBLE,
296
                                           VAL_CONNECTED_POINTS, VAL_SIMPLE_DOT, VAL_SOLID, 1, VAL_WHITE);
298
                                           VAL_CONNECTED_POINTS, VAL_SIMPLE_DOT, VAL_SOLID, 1, VAL_WHITE);
297
                ji = num_points;
299
                ji = num_points;
298
                f_t = 1;
-
 
299
        }
300
        }
300
 
301
 
301
        FlushInQ (pCOM1);
302
        FlushInQ (pCOM1);
302
        FlushOutQ (pCOM1);
303
        FlushOutQ (pCOM1);
303
        FlushInQ (pCOM2);
304
        FlushInQ (pCOM2);
Line 308... Line 309...
308
}
309
}
309
 
310
 
310
 
311
 
311
static int CVICALLBACK voltage_run(void *functionData)
312
static int CVICALLBACK voltage_run(void *functionData)
312
{
313
{
313
        int fix_range;
-
 
314
        double ymin,ymax,xmin,xmax;
-
 
315
        double voltA,voltB=0;
314
        double voltA;
316
        int time = 0;
-
 
317
        //double volt1[TEXT_LENGTH];
-
 
318
 
315
 
319
        initialize_voltage();
316
        initialize_voltage();
320
 
317
 
321
        int chart = NewCtrl (panel, CTRL_GRAPH_LS, "RUN VOLTAGE", 100, 15);
318
        chart = NewCtrl (panel, CTRL_STRIP_CHART_LS, "RUN VOLTAGE", 100, 15);
322
        SetCtrlAttribute(panel, chart, ATTR_HEIGHT, 600);
319
        SetCtrlAttribute(panel, chart, ATTR_HEIGHT, 600);
323
        SetCtrlAttribute(panel, chart, ATTR_WIDTH , 1300);
320
        SetCtrlAttribute(panel, chart, ATTR_WIDTH , 1300);
-
 
321
        SetAxisRange(panel, chart, VAL_NO_CHANGE, 0, 0, VAL_AUTOSCALE, 0, 0);
324
 
322
 
325
        while(1)
323
        while(1)
326
        {
324
        {
327
                //      Range
-
 
328
                GetCtrlVal(panel, p1_RANGE, &fix_range);
-
 
329
                if(fix_range)
-
 
330
                {
-
 
331
                        GetAxisRange (panel, chart, VAL_MANUAL, &xmin, &xmax, VAL_MANUAL, &ymin, &ymax);
-
 
332
                        if (ymax<=2) SetAxisRange (panel, chart, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 2);
-
 
333
                        else SetAxisRange (panel, chart, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 5);
-
 
334
                }
-
 
335
                else SetAxisRange (panel, chart, VAL_NO_CHANGE, 0, 0, VAL_AUTOSCALE, 0, 0);
-
 
336
 
-
 
337
                //volt1[time] = read_voltage();
-
 
338
                voltA = read_voltage();
325
                voltA = read_voltage();
339
 
-
 
340
                PlotPoint(panel, chart, time, voltA, VAL_SOLID_SQUARE, VAL_WHITE);
-
 
341
                if (time>0) PlotLine(panel, chart, time, voltA, time-1, voltB, VAL_WHITE);
326
                PlotStripChartPoint (panel, chart, voltA);
342
                if (time>50) SetAxisRange (panel, chart, VAL_MANUAL, time-50, time, VAL_NO_CHANGE, 0, 0);
-
 
343
 
327
 
344
                SetCtrlVal(panel, p1_VOLTAGE, voltA);
328
                SetCtrlVal(panel, p1_VOLTAGE, voltA);
345
 
329
 
346
                Delay(0.05);
330
                Delay(0.05);
347
                time++;
-
 
348
 
-
 
349
                voltB = voltA;
-
 
350
 
-
 
351
                //volt1[time] = voltA;
-
 
352
 
331
 
353
                FlushInQ (pCOM2);
332
                FlushInQ (pCOM2);
354
 
333
 
355
                if (vi == 0) break;
334
                if (vi == 0) break;
356
        }
335
        }
357
 
336
 
358
        DiscardCtrl (panel, chart);
337
        DiscardCtrl (panel, chart);
359
 
-
 
360
        // After some time (~4000 points) it becomes slower in writing out data...
-
 
361
 
338
        chart = 0;
362
        //if (graph!=0)  DeleteGraphPlot (panel, p1_VOLTAGE_GRAPH, graph, VAL_DELAYED_DRAW);
-
 
363
        //graph = PlotY (panel, p1_VOLTAGE_GRAPH, &volt1[0], time+1, VAL_DOUBLE,
-
 
364
        //                                      VAL_CONNECTED_POINTS, VAL_SIMPLE_DOT, VAL_SOLID, 1, VAL_WHITE);
-
 
365
 
339
 
366
        return 0;
340
        return 0;
367
}
341
}
368
 
342
 
369
 
343
 
370
static int CVICALLBACK free_run(void *functionData)
344
static int CVICALLBACK free_run(void *functionData)
371
{
345
{
372
        if (run == 1) return 0;
346
        if (run == 1) return 0;
373
        run1 = 1;
347
        run1 = 1;
374
 
348
 
375
        if (left_1) movement(-10000);
349
        if (left_1) movement(-10000);
376
        if (right_1) movement(10000);
350
        if (right_1) movement(10000);
Line 392... Line 366...
392
 
366
 
393
                        int strLen = GetInQLen (pCOM1);
367
                        int strLen = GetInQLen (pCOM1);
394
                        bytes_read0 = ComRd (pCOM1, read_data0, strLen);
368
                        bytes_read0 = ComRd (pCOM1, read_data0, strLen);
395
                        //printf("  : %s", read_data0);
369
                        //printf("  : %s", read_data0);
396
 
370
 
397
                        printf("Stop run1\n");
371
                        //printf("Stop run1\n");
398
 
372
 
399
                        break;
373
                        break;
400
                }
374
                }
401
        }
375
        }
402
 
376
 
403
        return 0;
377
        return 0;
404
}
378
}
405
 
379
 
406
 
380
 
Line 436... Line 410...
436
                        if (run == 1) break;
410
                        if (run == 1) break;
437
 
411
 
438
                        run = 1;
412
                        run = 1;
439
 
413
 
440
                        CmtScheduleThreadPoolFunction (poolHandle, daq_run, (void *)&dummy, &tfID);
414
                        CmtScheduleThreadPoolFunction (poolHandle, daq_run, (void *)&dummy, &tfID);
441
 
415
 
442
        }
416
        }
443
 
417
 
444
        return 0;
418
        return 0;
445
}
419
}
446
 
420
 
447
 
421
 
448
int CVICALLBACK StopCB (int panel, int control, int event,
422
int CVICALLBACK StopCB (int panel, int control, int event,
449
                                                void *callbackData, int eventData1, int eventData2)
423
                                                void *callbackData, int eventData1, int eventData2)
450
{
424
{
451
        switch (event)
425
        switch (event)
452
        {
426
        {
453
                case EVENT_COMMIT:
427
                case EVENT_COMMIT:
454
 
428
 
455
                        if (run == 0) break;
429
                        if (run == 0) break;
Line 459... Line 433...
459
                        CmtWaitForThreadPoolFunctionCompletion (poolHandle, tfID,
433
                        CmtWaitForThreadPoolFunctionCompletion (poolHandle, tfID,
460
                                                                                                        OPT_TP_PROCESS_EVENTS_WHILE_WAITING);
434
                                                                                                        OPT_TP_PROCESS_EVENTS_WHILE_WAITING);
461
                        CmtReleaseThreadPoolFunctionID (poolHandle, tfID);
435
                        CmtReleaseThreadPoolFunctionID (poolHandle, tfID);
462
 
436
 
463
                        printf("Stop\n");
437
                        printf("Stop\n");
464
 
438
 
465
                        break;
439
                        break;
466
 
440
 
467
        }
441
        }
468
 
442
 
469
        return 0;
443
        return 0;
470
}
444
}
471
 
445
 
472
 
446
 
473
int CVICALLBACK ExitCB (int panel, int control, int event,
447
int CVICALLBACK ExitCB (int panel, int control, int event,
474
                                                void *callbackData, int eventData1, int eventData2)
448
                                                void *callbackData, int eventData1, int eventData2)
475
{
449
{
476
        switch (event)
450
        switch (event)
477
        {
451
        {
478
                case EVENT_COMMIT:
452
                case EVENT_COMMIT:
479
                        QuitUserInterface (0);
453
                        QuitUserInterface (0);
480
                        CloseCom(pCOM1);
454
                        CloseCom(pCOM1);
481
                        CloseCom(pCOM2);
455
                        CloseCom(pCOM2);
482
                        break;
456
                        break;
483
        }
457
        }
484
        return 0;
458
        return 0;
485
}
459
}
486
 
460
 
487
 
461
 
488
int CVICALLBACK Fourier_TransCB (int panel, int control, int event,
462
int CVICALLBACK Fourier_TransCB (int panel, int control, int event,
489
                                                                 void *callbackData, int eventData1, int eventData2)
463
                                                                 void *callbackData, int eventData1, int eventData2)
490
{
464
{
491
        if (!ji) return 0;
465
        if (!ji) return 0;
492
        const int ii = ji;
466
        const int ii = ji;
493
        double fourier_t[ii], fourier_ti[ii];
467
        double fourier_t[ii], fourier_ti[ii];
494
        char window_fun;
468
        char window_fun;
-
 
469
        double voltmax=0, voltmin=5, voltavg;
495
 
470
 
496
        switch (event)
471
        switch (event)
497
        {
472
        {
498
                case EVENT_COMMIT:
473
                case EVENT_COMMIT:
499
 
474
 
500
                        for(int i=0; i<ii; i++)
475
                        for(int i=0; i<ii; i++)
501
                        {
476
                        {
502
                                fourier_t[i] = volt_g[i];
477
                                fourier_t[i] = volt_g[i];
503
                                fourier_ti[i] = 0;
478
                                fourier_ti[i] = 0;
-
 
479
                               
-
 
480
                                if (fourier_t[i]>voltmax) voltmax = fourier_t[i];
-
 
481
                                if (fourier_t[i]<voltmin) voltmin = fourier_t[i];
504
                        }
482
                        }
505
 
483
 
-
 
484
                        voltavg = (voltmin+voltmax)/2.0;
506
                        GetCtrlVal(panel, p1_WIN_FUN, &window_fun);
485
                        GetCtrlVal(panel, p1_WIN_FUN, &window_fun);
507
                        //printf("window_fun = %d\n", window_fun);
486
                        //printf("window_fun = %d\n", window_fun);
-
 
487
                        //printf("max %f, min %f, avg %f\n", voltmax, voltmin, voltavg);
508
                        if (window_fun!=0)
488
                        if (window_fun!=0)
509
                        {
489
                        {
510
                                //do something with window functions
490
                                //do something with window functions            (N=ii)
511
                                if(window_fun==1) for(int i=0; i<ii; i++) fourier_t[i] = (2*fourier_t[i]);
491
                                if(window_fun==1) for(int i=0; i<ii; i++) fourier_t[i] = (fourier_t[i] - voltavg)*(1 - fabs((i-(ii/2.0))/(ii/2))) + voltavg;                                    //Bartlett
-
 
492
                                if(window_fun==2) for(int i=0; i<ii; i++) fourier_t[i] = (fourier_t[i] - voltavg)*(1 - ((i-(ii/2.0))/(ii/2))*((i-(ii/2.0))/(ii/2))) + voltavg;  //Welch
512
                                if(window_fun==2) for(int i=0; i<ii; i++) fourier_t[i] = sin(fourier_t[i]);
493
                                if(window_fun==3) for(int i=0; i<ii; i++) fourier_t[i] = (fourier_t[i] - voltavg)*(0.5*(1 - cos(2*3.14159265359*i/ii))) + voltavg;                              //Hann
513
                                YGraphPopup ("HOW volt_g LOOKS NOW", fourier_t, ii, VAL_DOUBLE);
494
                                YGraphPopup ("HOW voltage LOOKS NOW", fourier_t, ii, VAL_DOUBLE);
514
                        }
495
                        }
515
 
496
               
516
                        FFT (fourier_t, fourier_ti, ii);
497
                        FFT (fourier_t, fourier_ti, ii);
517
                        for (int i=0; i<ii; i++) fourier_t[i] = fabs(fourier_t[i]);
498
                        for (int i=0; i<ii; i++) fourier_t[i] = fabs(fourier_t[i]);
518
                        fourier_t[0]=0;
499
                        fourier_t[0]=0;
519
 
500
 
520
                        YGraphPopup ("FOURIER", fourier_t, ii/2+1, VAL_DOUBLE);
501
                        YGraphPopup ("FOURIER", fourier_t, ii/2+1, VAL_DOUBLE);
-
 
502
                       
-
 
503
 
-
 
504
                        FILE *fp,*fp1;
-
 
505
 
-
 
506
                        //file name has to have file extension
-
 
507
                        char fname[50];
-
 
508
                        GetCtrlVal(panel, p1_F_NAME, fname);
-
 
509
                       
-
 
510
                        char fname0[100] = "C:/Users/";
-
 
511
                        char *name;
-
 
512
                        name = getenv("USERNAME");
-
 
513
                        strcat(fname0,name);
-
 
514
                        strcat(fname0,"/Desktop/");
-
 
515
                        //char fname0[100] = "C:/Users/Student/Desktop/";               //Alternative way
-
 
516
                        strcat(fname0,fname);
-
 
517
                        fp = fopen(fname0, "w");
-
 
518
 
-
 
519
                        char fname1[50];
-
 
520
                        GetCtrlVal(panel, p1_F_NAME1, fname1);
-
 
521
                        char fname10[100] = "C:/Users/";
-
 
522
                        strcat(fname10,name);
-
 
523
                        strcat(fname10,"/Desktop/");
-
 
524
                        strcat(fname10,fname1);
-
 
525
                        fp1 = fopen(fname10, "w");
-
 
526
 
-
 
527
                        fprintf(fp, "step\tvoltage\n");
-
 
528
                        for(int i=0; i<ii; i++)
-
 
529
                        {
-
 
530
                                fprintf(fp, "%d\t%lf\n", i+1, volt_g[i]);
-
 
531
                        }
-
 
532
 
-
 
533
                        fprintf(fp1, "step\tfourier\n");
-
 
534
                        for(int i=0; i<ii/2+1; i++)
-
 
535
                        {
-
 
536
                                fprintf(fp1, "%d\t%lf\n", i, fourier_t[i]);  //0th component is from DC - background? YES
-
 
537
                        }
-
 
538
 
-
 
539
                        fclose(fp);
-
 
540
                        fclose(fp1);
-
 
541
                        printf("Files %s and %s created.\n", fname, fname1);
521
 
542
 
522
                        if (f_t == 1)
-
 
523
                        {
-
 
524
                                FILE *fp,*fp1;
-
 
525
 
-
 
526
                                //file name has to have file extension
-
 
527
                                char fname[50];
-
 
528
                                GetCtrlVal(panel, p1_F_NAME, fname);
-
 
529
                                fp = fopen(fname, "w");
-
 
530
 
-
 
531
                                char fname1[50];
-
 
532
                                GetCtrlVal(panel, p1_F_NAME1, fname1);
-
 
533
                                fp1 = fopen(fname1, "w");
-
 
534
 
-
 
535
                                fprintf(fp, "step\tvolt_g\n");
-
 
536
                                for(int i=0; i<ii; i++)
-
 
537
                                {
-
 
538
                                        fprintf(fp, "%d\t%lf\n", i+1, volt_g[i]);
-
 
539
                                }
-
 
540
 
-
 
541
                                fprintf(fp1, "step\tfourier_t\n");
-
 
542
                                for(int i=0; i<ii/2+1; i++)
-
 
543
                                {
-
 
544
                                        fprintf(fp1, "%d\t%lf\n", i, fourier_t[i]);  //0th component is from DC - background?
-
 
545
                                }
-
 
546
 
-
 
547
                                fclose(fp);
-
 
548
                                fclose(fp1);
-
 
549
                                printf("Files %s and %s created.\n", fname, fname1);
-
 
550
                        }
-
 
551
 
-
 
552
                        f_t = 0;  //so that we make only one file
-
 
553
                        break;
543
                        break;
554
 
544
 
555
        }
545
        }
556
 
546
 
557
        return 0;
547
        return 0;
558
}
548
}
559
 
549
 
560
 
550
 
561
int CVICALLBACK ExamplesCB (int panel, int control, int event,
551
int CVICALLBACK ExamplesCB (int panel, int control, int event,
562
                                                        void *callbackData, int eventData1, int eventData2)
552
                                                        void *callbackData, int eventData1, int eventData2)
563
{
553
{
564
        const int ki=1024;
554
        const int ki=1024;
565
        double ret[ki], ret1[ki];
555
        double ret[ki], ret1[ki];
566
        double val = 3.14159265/180;
556
        double val = 3.14159265/180;
567
        int x1, x2, a1, a2;
557
        int x1, x2, a1, a2;
-
 
558
        char window_fun;
568
 
559
 
569
        switch (event)
560
        switch (event)
570
        {
561
        {
571
                case EVENT_COMMIT:
562
                case EVENT_COMMIT:
572
 
563
 
573
                        GetCtrlVal(panel, p1_FREQ1, &x1);
564
                        GetCtrlVal(panel, p1_FREQ1, &x1);
574
                        GetCtrlVal(panel, p1_FREQ2, &x2);
565
                        GetCtrlVal(panel, p1_FREQ2, &x2);
575
                        GetCtrlVal(panel, p1_AMPL1, &a1);
566
                        GetCtrlVal(panel, p1_AMPL1, &a1);
576
                        GetCtrlVal(panel, p1_AMPL2, &a2);
567
                        GetCtrlVal(panel, p1_AMPL2, &a2);
577
 
568
 
-
 
569
                        GetCtrlVal(panel, p1_WIN_FUN, &window_fun);
-
 
570
                        //printf("window_fun = %d\n", window_fun);
-
 
571
                       
578
                        for (int i=0; i<ki; i++)
572
                        for (int i=0; i<ki; i++)
579
                        {
573
                        {
580
                                ret[i] = a1*sin(x1*i*val)+a2*sin(x2*i*val);
574
                                ret[i] = a1*sin(x1*i*val)+a2*sin(x2*i*val);
581
                                ret1[i] = 0;
575
                                ret1[i] = 0;
-
 
576
                        }
-
 
577
                        if (window_fun!=0)
-
 
578
                        {
-
 
579
                                //do something with window functions            (N=ki)
-
 
580
                                if(window_fun==1) for(int i=0; i<ki; i++) ret[i] = ret[i]*(1 - fabs((i-(ki/2.0))/(ki/2)));                                                                      //Bartlett
-
 
581
                                if(window_fun==2) for(int i=0; i<ki; i++) ret[i] = ret[i]*(1 - ((i-(ki/2.0))/(ki/2))*((i-(ki/2.0))/(ki/2)));                            //Welch
-
 
582
                                if(window_fun==3) for(int i=0; i<ki; i++) ret[i] = ret[i]*(0.5*(1 - cos(2*3.14159265359*i/ki)));                                                        //Hann
582
                        }
583
                        }
583
                        YGraphPopup ("example graph", ret, ki, VAL_DOUBLE);
584
                        YGraphPopup ("example graph", ret, ki, VAL_DOUBLE);
584
                        FFT (ret, ret1, ki);
585
                        FFT (ret, ret1, ki);
585
                        for (int i=0; i<ki; i++) ret[i] = fabs(ret[i]);
586
                        for (int i=0; i<ki; i++) ret[i] = fabs(ret[i]);
586
                        //for (int i=0;i<ki;i++) printf("basic: %lf, fourier: %lf\n", ret1[i], ret[i]);
587
                        //for (int i=0;i<ki;i++) printf("basic: %lf, fourier: %lf\n", ret1[i], ret[i]);
Line 632... Line 633...
632
        switch (event)
633
        switch (event)
633
        {
634
        {
634
                case EVENT_COMMIT:
635
                case EVENT_COMMIT:
635
 
636
 
636
                        GetCtrlVal(panel, p1_RANGE, &fix_range);
637
                        GetCtrlVal(panel, p1_RANGE, &fix_range);
-
 
638
                       
-
 
639
                        if(chart)
-
 
640
                        {
-
 
641
                                if(fix_range)
-
 
642
                                {
-
 
643
                                        GetAxisRange (panel, chart, VAL_MANUAL, &xmin, &xmax, VAL_MANUAL, &ymin, &ymax);
-
 
644
                                        if (ymax<=2) SetAxisRange (panel, chart, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 2);
-
 
645
                                        else SetAxisRange (panel, chart, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 5);
-
 
646
                                }
-
 
647
                                else SetAxisRange(panel, chart, VAL_NO_CHANGE, 0, 0, VAL_AUTOSCALE, 0, 0);
-
 
648
                        }
-
 
649
                       
637
                        if(fix_range)
650
                        if(fix_range)
638
                        {
651
                        {
639
                                GetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_MANUAL, &xmin, &xmax, VAL_MANUAL, &ymin, &ymax);
652
                                GetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_MANUAL, &xmin, &xmax, VAL_MANUAL, &ymin, &ymax);
640
                                if (ymax<=2) SetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 2);
653
                                if (ymax<=2) SetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 2);
641
                                else SetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 5);
654
                                else SetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_NO_CHANGE, 0, 0, VAL_MANUAL, 0, 5);
642
                        }
655
                        }
643
                        else SetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_NO_CHANGE, 0, 0, VAL_AUTOSCALE, 0, 0);
656
                        else SetAxisRange (panel, p1_VOLTAGE_GRAPH, VAL_NO_CHANGE, 0, 0, VAL_AUTOSCALE, 0, 0);
644
 
657
 
645
                        break;
658
                        break;
646
 
659
 
647
        }
660
        }
648
 
661
 
649
        return 0;
662
        return 0;
650
}
663
}
651
 
664
 
652
 
665
 
653
int CVICALLBACK FreeMoveCB (int panel, int control, int event,
666
int CVICALLBACK FreeMoveCB (int panel, int control, int event,
654
                                                        void *callbackData, int eventData1, int eventData2)
667
                                                        void *callbackData, int eventData1, int eventData2)
655
{
668
{
656
        int dummy;
669
        int dummy;
657
 
-
 
658
        switch (event)
-
 
659
        {
-
 
660
                case EVENT_COMMIT:
-
 
661
 
-
 
662
                        if (run == 1) break;
-
 
663
                        if (run1 == 1) break;
-
 
664
                        right_1 = 1;
-
 
665
 
-
 
666
                        CmtScheduleThreadPoolFunction (poolHandle, free_run, (void *)&dummy, &tfID1);
-
 
667
 
670
 
-
 
671
        switch (event)
-
 
672
        {
-
 
673
                case EVENT_COMMIT:
-
 
674
 
-
 
675
                        if (run == 1) break;
-
 
676
                        if (run1 == 1) break;
-
 
677
                        right_1 = 1;
-
 
678
 
-
 
679
                        CmtScheduleThreadPoolFunction (poolHandle, free_run, (void *)&dummy, &tfID1);
-
 
680
 
668
                        break;
681
                        break;
669
 
682
 
670
        }
683
        }
671
 
684
 
672
        return 0;
685
        return 0;
673
}
686
}
674
 
687
 
675
int CVICALLBACK FreeMove1CB (int panel, int control, int event,
688
int CVICALLBACK FreeMove1CB (int panel, int control, int event,
676
                                                         void *callbackData, int eventData1, int eventData2)
689
                                                         void *callbackData, int eventData1, int eventData2)
677
{
690
{
678
        int dummy;
691
        int dummy;
679
 
692
 
680
        switch (event)
693
        switch (event)
681
        {
694
        {
682
                case EVENT_COMMIT:
695
                case EVENT_COMMIT:
683
 
696
 
684
                        if (run == 1) break;
697
                        if (run == 1) break;
685
                        if (run1 == 1) break;
698
                        if (run1 == 1) break;
686
                        left_1 = 1;
699
                        left_1 = 1;
687
 
700
 
688
                        CmtScheduleThreadPoolFunction (poolHandle, free_run, (void *)&dummy, &tfID1);
701
                        CmtScheduleThreadPoolFunction (poolHandle, free_run, (void *)&dummy, &tfID1);
689
 
702
 
690
                        break;
703
                        break;
691
 
704
 
692
        }
705
        }
693
 
706
 
694
        return 0;
707
        return 0;
Line 702... Line 715...
702
                case EVENT_COMMIT:
715
                case EVENT_COMMIT:
703
 
716
 
704
                        if (run == 1) break;
717
                        if (run == 1) break;
705
                        if (run1 == 0) break;
718
                        if (run1 == 0) break;
706
                        run1 = 0;
719
                        run1 = 0;
-
 
720
                       
-
 
721
                        if (run1 == 0)                     //Additionally here just to be sure
-
 
722
                        {
-
 
723
                        ComWrt (pCOM1, "!\n", 2);  //stops grbl
-
 
724
 
-
 
725
                        Delay(0.01);
-
 
726
 
-
 
727
                        ComWrt (pCOM1, "~\n", 2);  //releases grbl
-
 
728
 
-
 
729
                        Delay(0.01);
-
 
730
 
-
 
731
                        int strLen = GetInQLen (pCOM1);
-
 
732
                        bytes_read0 = ComRd (pCOM1, read_data0, strLen);
-
 
733
                        //printf("  : %s", read_data0);
-
 
734
 
-
 
735
                        printf("Stop run1\n");
-
 
736
                        }
707
 
737
 
708
                        CmtWaitForThreadPoolFunctionCompletion (poolHandle, tfID1,
738
                        CmtWaitForThreadPoolFunctionCompletion (poolHandle, tfID1,
709
                                                                                                        OPT_TP_PROCESS_EVENTS_WHILE_WAITING);
739
                                                                                                        OPT_TP_PROCESS_EVENTS_WHILE_WAITING);
710
                        CmtReleaseThreadPoolFunctionID (poolHandle, tfID1);
740
                        CmtReleaseThreadPoolFunctionID (poolHandle, tfID1);
711
 
741