Project

General

Profile

Revision 8c95bbef

ID8c95bbef5dc9cc70a228ec2b0eb3d35eada3d6a8
Parent d47be08d
Child bbf2f5ad

Added by Thomas Mullins over 11 years ago

Changed read util to flush input and wait for reads to complete

View differences:

util/read.c
14 14
  struct termios ios;
15 15
  bzero(&ios, sizeof(ios));
16 16
  ios.c_cflag = B9600 | CS8 | CREAD;
17
  tcsetattr(fd, TCSANOW, &ios);
17
  tcsetattr(fd, TCSAFLUSH, &ios);
18 18
}
19 19

  
20 20
int bswap(int x) {
......
22 22
    | ((x>>8) & 0xff00) | ((x>>24) & 0xff);
23 23
}
24 24

  
25
void read_all(int fd, void *buf, int n) {
26
  int nread;
27
  while (n > 0) {
28
    nread = read(fd, buf, n);
29
    buf += nread;
30
    n -= nread;
31
    usleep(10000);
32
  }
33
}
34

  
25 35
int main(int argc, char **argv) {
26 36
  int fd;
27 37
  char status;
......
30 40
  init_tty(fd);
31 41

  
32 42
  while (1) {
43
    tcflush(fd, TCIFLUSH);
33 44
    write(fd, read_cmd, sizeof(read_cmd));
34
    read(fd, &status, 1);
45
    read_all(fd, &status, 1);
35 46
    if (status == RFID_OK) {
36
      read(fd, &serno, 4);
47
      read_all(fd, &serno, 4);
37 48
      serno = bswap(serno);
38 49
      printf("%08x\n", serno);
39 50
    } else {
40 51
      printf("error %d\n", (int)(unsigned char)status);
41 52
    }
42
    usleep(100000);
53
    usleep(50000);
43 54
  }
44 55

  
45 56
  close(fd);

Also available in: Unified diff