#include #include #include #include #include #include int pd; speed_t predkosc; int n, a; unsigned char znak[100]; unsigned char karta[10]; struct termios opcje; /* S T A R T */ void main (argc, argv) int argc; char *argv[]; { if((pd = open("/dev/ttyAMA0",O_RDWR | O_NDELAY |O_NONBLOCK)) != -1) { tcgetattr (pd, &opcje); /* Zaprogramuj predkosc transmisji */ predkosc = B9600; cfsetspeed (&opcje, predkosc); /* Ustaw tryb raw, potem bez parzystosci i znak osmiobitowy */ opcje.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); opcje.c_cflag &= ~PARENB; opcje.c_cflag &= ~PARODD; opcje.c_cflag &= ~CSTOPB; opcje.c_cflag &= ~CSIZE; opcje.c_cflag |= CS8; opcje.c_iflag &= ~IXON; opcje.c_iflag &= ~IXOFF; opcje.c_iflag &= ~INLCR; opcje.c_iflag &= ~ICRNL; opcje.c_oflag &= ~ONLCR; opcje.c_oflag &= ~OCRNL; tcsetattr (pd, TCSANOW, &opcje); printf("Podlaczylem czytnik RFID pd=%d \n",pd); fflush(0); } else { printf("Brak czytnika RFID!"); exit(2); } printf ("\n\n**************** Program gotowy do odczytu danych z czytnika ******************\n\n"); fflush(0); for(;;) { // remove multiple card readings sleep(1); while( read(pd, &znak, 99) > 0) ; znak[0]=0x00; while (znak[0] != 0x02) // start of card ID { read(pd, &znak[0], 1); } n=0; for(;;) { if ((a=read (pd, &znak, 1)) != -1) { karta[n] = znak[0]; n++; if (n>11) break; } } // remove CRC karta[10]=0x00; printf("karta: %s\n", karta); fflush(0); } } // od main