SimpleTest.c
2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*=============================================================
* SimpleTest.c
* Simple test of some critical server behaviour
* 11 Apr 2009, V.1.0, Fedorov
*=============================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <DD.h>
#include <time.h>
#include <sys/time.h>
/*-------------------------*/
#define VI "ace:imf:all\0"
#define PAR0 "IMF\0"
#define PAR1 "Time\0"
#define NVARS 2
#define ATTR "MinSampling\0"
#define START "2008000000000000\0"
#define TI "0000010000000000\0"
/*-------------------------*/
int main()
{
char ViName[100] = VI;
char StartTime[17] = START;
char TimeInt[17] = TI;
char ParName1[20] = PAR1;
char ParName0[20] = PAR0;
char *ParNames[NVARS] = {(char *)ParName0, (char *)ParName1};
char AttrName[100] = ATTR;
double RealTime;
DD_data_t *data;
int ID, error;
struct timeval start, end;
long secs, usecs;
gettimeofday(&start,NULL);
ID = DD_SetVariable(ViName);
printf("ID = %d\n",ID);
if(ID < 0)
{
error = DD_Close(99);
exit(0);
}
/*
* Get Sampling Time info (secs)
* attribute names : MinSampling (constant sampling)
* attribute names : MinSampling & MaxSampling (variable sampling)
*/
error = DD_GetInform(ID, AttrName, &data);
if(error < 0)
{
error = DD_Close(ID);
exit(0);
}
printf(" sampling %lf\n", *(double *)data->Variables[0]);
/*
* RealTime - double time pointer points to after SetTime
*/
error = DD_SetTimeInfo(ID, StartTime, &RealTime);
printf("DD_SetTimeInfo returns = %d\n",error);
if(error < 0)
{
error = DD_Close(ID);
exit(0);
}
printf("time set as %lf\n",RealTime);
do
{
error = DD_GetMultiData(ID,NVARS, (char **)ParNames,TimeInt, &data, 1);
printf("DD_GetData returns = %d\n",error);
if(error < 0)
{
error = DD_Close(ID);
exit(0);
}
if(error == MOREDELAY)
{
sleep(2);
error = MOREDATA;
}
}
while(error == MOREDATA);
/*---------- Close VI and reurn -----------------------*/
error = DD_Close(ID);
gettimeofday(&end,NULL);
secs = end.tv_sec - start.tv_sec;
usecs = end.tv_usec - start.tv_usec;
printf("Time elapsed: msecs %f\n",(float)(secs*1000000 + usecs)/1000.);
return 1;
}