Go to the first, previous, next, last section, table of contents.


Example 3: An Annotation Printer

This program prints annotations in readable form. Its first argument is an annotator name, and its second argument is a record name.

 1  #include <stdio.h>
 2  #include <ecg/db.h>
 3
 4  main(argc, argv)
 5  int argc;
 6  char *argv[];
 7  {
 8      DB_Anninfo a;
 9      DB_Annotation annot;
10
11      if (argc < 3) {
12          fprintf(stderr, "usage: %s annotator record\n", argv[0]);
13          exit(1);
14      }
15      a.name = argv[1]; a.stat = READ;
16      (void)sampfreq(argv[2]);
17      if (annopen(argv[2], &a, 1) < 0) exit(2);
18      while (getann(0, &annot) == 0)
19          printf("%s (%ld) %s %d %d %d %s\n",
20                 timstr(-(annot.time)),
21                 annot.time,
22                 annstr(annot.anntyp),
23                 annot.subtyp, annot.chan, annot.num,
24                 (annot.aux != NULL && *annot.aux > 0) ?
25                  annot.aux+1 : "");
26      exit(0);
27  }

Notes:

Line 16:
The invocation of sampfreq here sets the internal variables needed by timstr below.
Line 20:
This line gives the annotation time as a time of day. If the base time is omitted in the `header' file, or if we used timstr(annot.time) instead, we would obtain the elapsed time from the beginning of the record.
Lines 24--25:
This expression evaluates to an empty string unless the aux string is non-empty. It makes the assumption that aux is a printable ASCII string; the printable part follows the length byte.


Go to the first, previous, next, last section, table of contents.



George B. Moody (george@hstbme.mit.edu)