| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This program reads the signal specifications of the record named as its argument:
1 #include <stdio.h>
2 #include <wfdb/wfdb.h>
3
4 main(argc, argv)
5 int argc;
6 char *argv[];
7 {
8 WFDB_Siginfo *s;
9 int i, nsig;
10
11 if (argc < 2) {
12 fprintf(stderr, "usage: %s record\n", argv[0]);
13 exit(1);
14 }
15 nsig = isigopen(argv[1], NULL, 0);
16 if (nsig < 1) exit(2);
17 s = (WFDB_Siginfo *)malloc(nsig * sizeof(WFDB_Siginfo));
18 if (s == NULL) {
19 fprintf(stderr, "insufficient memory\n");
20 exit(3);
21 }
22 if (isigopen(argv[1], s, nsig) != nsig) exit(2);
23 printf("Record %s\n", argv[1]);
24 printf("Starting time: %s\n", timstr(0L));
25 printf("Sampling frequency: %g Hz\n", sampfreq(argv[1]));
26 printf("%d signals\n", nsig);
27 for (i = 0; i < nsig; i++) {
28 printf("Group %d, Signal %d:\n", s[i].group, i);
29 printf(" File: %s\n", s[i].fname);
30 printf(" Description: %s\n", s[i].desc);
31 printf(" Gain: ");
32 if (s[i].gain == 0.)
33 printf("uncalibrated; assume %g", WFDB_DEFGAIN);
34 else printf("%g", s[i].gain);
35 printf(" adu/%s\n", s[i].units ? s[i].units : "mV");
36 printf(" Initial value: %d\n", s[i].initval);
37 printf(" Storage format: %d\n", s[i].fmt);
38 printf(" I/O: ");
39 if (s[i].bsize == 0) printf("can be unbuffered\n");
40 else printf("%d-byte blocks\n", s[i].bsize);
41 printf(" ADC resolution: %d bits\n", s[i].adcres);
42 printf(" ADC zero: %d\n", s[i].adczero);
43 if (s[i].nsamp > 0L) {
44 printf(" Length: %s (%ld sample intervals)\n",
45 timstr(s[i].nsamp), s[i].nsamp);
46 printf(" Checksum: %d\n", s[i].cksum);
47 }
48 else printf(" Length undefined\n");
49 }
50 exit(0);
51 }
|
(See http://www.physionet.org/physiotools/wfdb/examples/example5.c for a copy of this program.)
Notes:
argv[1], is the record name. The
number of signals listed in the header file for the record is returned by
isigopen as nsig. If nsig < 1, isigopen will
print an error message; in this case the program can't do anything useful,
so it exits.
nsig signal information (WFDB_Siginfo) objects.
isigopen, we pass the pointer to the
signal information objects and the number of signals we expect to open.
isigopen returns the number of signals it is able to open; if
any of those named in the header file are unreadable, the return value
will not match nsig, and the program exits.
timstr with an argument of zero (here written `0L'
to emphasize to the compiler that the argument is a long integer)
will obtain the starting time of the record. If no starting time is
defined, timstr will return "0:00:00".
gain is interpreted.
units field is NULL, the physical units are assumed to be
millivolts ("mV").
bsize is zero, I/O can be performed in blocks of any reasonable
size; otherwise it must be performed in blocks of exactly the specified
bsize.
timstr in line 39 is positive, it is interpreted as a time
interval. The checksum is defined only if the record length is
defined.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |