Subversion Repositories f9daq

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
363 f9daq 1
#include <utility.h>
2
#include <ansi_c.h>
3
#include <cvirte.h>
4
#include "usbtc08.h"
5
 
6
#define NCH 4
7
 
8
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
9
                                           LPSTR lpszCmdLine, int nCmdShow)
10
{
11
        int i,no_of_units, minimum_interval;
12
        int16_t channel, overflow_flags;
13
        int16_t new_handle, handle, error_code, handle_array[10];
14
        float value_array[9];
15
        char tc08string[USBTC08_MAX_INFO_CHARS];
16
        USBTC08_INFO tc08info;
17
 
18
        if (InitCVIRTE (hInstance, 0, 0) == 0)
19
                return -1;    /* out of memory */
20
 
21
        for (i = 0; (new_handle = usb_tc08_open_unit()) > 0; i++)
22
        {
23
// store the handle in an array
24
                handle_array[i] = new_handle;
25
        }
26
        no_of_units = i;
27
        printf ("no. of units: %d\n",no_of_units);
28
// deal with the error if there is one, if new_handle was zero, then
29
// there was no error and we reached the last available unit
30
        if (new_handle == -1)
31
        {
32
                error_code = usb_tc08_get_last_error(0);
33
                printf("Unit failed to open\nThe error code is %d\n", error_code);
34
// could terminate the application here
35
                return 1;
36
        }
37
//      Delay(5.);
38
 
39
        handle = handle_array[0];
40
        usb_tc08_get_unit_info(handle_array[0], &tc08info);
41
        usb_tc08_get_formatted_info(handle, tc08string, USBTC08_MAX_INFO_CHARS);
42
        printf ("%s\n",tc08string);
43
        usb_tc08_get_unit_info2(handle, tc08string, USBTC08_MAX_INFO_CHARS, USBTC08LINE_BATCH_AND_SERIAL);
44
        printf ("%s\n",tc08string);
45
 
46
//========================================================
47
// Setting up and converting readings with Get Single mode
48
//========================================================
49
        usb_tc08_set_mains(handle, 0); // use 50Hz mains noise rejection
50
//      for (channel = 0; channel < USBTC08_MAX_CHANNELS + 1; channel++)
51
        for (channel = 0; channel < NCH+1; channel++)
52
        {
53
// Set each channel up as a type K thermocouple
54
// Channel 0 is the cold junction and will be enabled
55
// by setting the third argument to anything other than ' '
56
                usb_tc08_set_channel(handle, channel, 'K');
57
        }
58
// Find out the approximate conversion time for a call to
59
// usb_tc08_get_single
60
        minimum_interval = usb_tc08_get_minimum_interval_ms(handle);
61
        printf("Conversion time: %d\n", minimum_interval);
62
// Collect readings
63
        for (i = 0; i < 20; i++)
64
        {
65
// do the conversion for all channels
66
                usb_tc08_get_single(handle, value_array, &overflow_flags, 0);
67
// print out the values
68
//              printf("\n\nTime: %d minute(s)", i);
69
                for (channel = 0; channel < NCH+1; channel++)
70
                {
71
// Check for overflows on each channel
72
// with a bitwise & comparator
73
// Shift the comparison bit to match the channel
74
                        if (overflow_flags &(1 << channel))
75
                        {
76
                                printf("\nChannel %d overflowed", channel);
77
                        }
78
                        else // no overflow
79
                        {
80
                                printf("\nChannel %d: %f", channel, value_array[channel]);
81
                        }
82
                }
83
                Delay(2.);
84
        }
85
        for (i = 0; i < no_of_units; i++)
86
        {
87
                usb_tc08_close_unit(handle_array[i]);
88
        }
89
        Delay(2.);
90
        return 0;
91
}