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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
int port_com;
fd_set read_port_timeout;
struct timeval timeout;
//Ouverture du port
if((port_com = open(nom_COM, O_RDONLY)) < 0){
//erreur
}
// Gestion des paramètres
/*Lecture des parametres courants*/
tcgetattr(port_com, &termios_p);
/*On ignore les BREAK et les caracteres avec erreurs de parite*/
termios_p.c_iflag = IGNBRK | IGNPAR;
/*Pas de mode de sortie particulier*/
termios_p.c_oflag = 0;
// Choix de la parité, Baudrate and co (paramètrage final de type 8N1)
/*...*/
/*Caracteres immediatement disponibles*/
termios_p.c_cc[VMIN] = 1;
termios_p.c_cc[VTIME] = 0;
/*Sauvegarde des nouveaux parametres*/
tcsetattr(port_com, TCSANOW, &termios_p);
//Mise en place de timeouts
FD_ZERO(&read_port_timeout);
FD_SET(port_com, &read_port_timeout);
timeout.tv_sec = 8;
timeout.tv_usec = 0;
// Lecture
while(port_actif){
retval = select(port_com + 1, &read_port_timeout, NULL, NULL, &timeout);
if(retval != -1){
if(read(port_com,&Buff,1) == -1){
port_actif = 0;
}
else{
/*Traitement*/
}
}
}
} |
Partager