14 #include <sys/types.h>
16 #include <sys/ioctl.h>
25 int Sample(int fd, int bits);
27 int main(int argc, char *argv[]) {
34 printf("Usage: %s <tty> <baud>\n", argv[0]);
38 switch(atoi(argv[2])) {
39 case 1200: baud = B1200; break;
40 case 2400: baud = B2400; break;
41 case 4800: baud = B4800; break;
42 case 9600: baud = B9600; break;
43 case 19200: baud = B19200; break;
44 case 38400: baud = B38400; break;
45 case 115200: baud = B115200; break;
47 printf("%s: Baud rate %s not supported.\n", argv[0], argv[2]);
51 if ((TTY_fd = open(argv[1], O_RDWR | O_NDELAY)) < 0) {
52 fprintf(stderr, "%s: %s\n", argv[1], strerror(errno));
56 res = tcgetattr(TTY_fd, &tt);
57 res = cfsetospeed(&tt, baud);
59 tt.c_oflag &= (~(TABDLY | ONLCR));
60 res = tcsetattr(TTY_fd, TCSANOW, &tt);
63 for (i = 0; i < 100; i++) {
64 n1 = Sample(TTY_fd, 200);
67 if (i % 20 == 19) printf("\n");
70 printf("Mean of first 100 REG200 trials = %f\n", (double)mean / 100.0);
73 for (i = 100; i < 200; i++) {
74 n1 = Sample(TTY_fd, i);
75 printf("%3d: %3d\n", i, n1);
80 static int oldbits = 0;
81 static int bitsleft = 0;
82 int Sample(int fd, int bits) {
89 sum += (oldbits & 0x01);
95 n1 = read(fd, &c1, 1);
96 } while (n1 == 0 || (n1 == -1 && errno == EAGAIN));
98 /* Fatal error occurred, die now? */
104 printf("Sampled %c%c%c%c%c%c%c%c\n",
105 ((oldbits & 0x80)?'1':'0'),
106 ((oldbits & 0x40)?'1':'0'),
107 ((oldbits & 0x20)?'1':'0'),
108 ((oldbits & 0x10)?'1':'0'),
109 ((oldbits & 0x08)?'1':'0'),
110 ((oldbits & 0x04)?'1':'0'),
111 ((oldbits & 0x02)?'1':'0'),
112 ((oldbits & 0x01)?'1':'0'));