1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| int fd;
int i, num_int;
char recup_port[30],num_str[30];
char c;
struct termios termios_p;
/* Ouverture de la liaison serie */
fd = ...
...
termios_p.c_iflag = ...
...
/* Boucle de lecture du port */
while(1){
tcflush(fd, TCIFLUSH); // vide le buffer
c='\0';
i=0;
while(c!=0x0a){ // tant que différent de '\n' (fin de numéro de carte)
read(fd, &c, 1);
recup_port[i]=c;
printf("%c\n",c);
i++;
}
recup_port[i]=0;
printf("%s\n",recup_port); // affiche 000000xxxxxx\r\n
strncpy(num_str,recup_port,i-3); //J'enlève le dernier chiffre x (clef de contrôle) et le \r \n
num_int=atoi(num_str); //Je récupère mon numéro de carte au format entier
printf("%d\n",num_int); // affiche xxxxxx
sleep(2); // le sleep permet d'éviter que le programme s'endorme sur la lecture de la même carte
}
/* Fermeture de la liaion serie */
close(fd); |
Partager