struct termios option,ancienterm;
hCom= open(Nomport,O_RDWR|O_NONBLOCK);
if(hCom==-1)
{
cout<<"Erreur d'ouverture de fichier"<<endl;
}
//enregistre les paramètres actuels du port
tcgetattr(hCom,&ancienterm);
// Lecture des parametres courants
tcgetattr(hCom,&option);
/* Mode non-canonique avec echo */
option.c_lflag = ECHO;
// règle en NULL MODEM
option.c_cflag |= CLOCAL;
// On ignore les BREAK et les caracteres avec erreurs de parite
option.c_iflag = IGNBRK | IGNPAR;
// Pas de mode de sortie particulier
option.c_oflag = 0;
// On configure ici la vitesse souhaité
switch (vitesse)
{
case 50: cfsetispeed(&option, B50);
cfsetospeed(&option, B50);break;
case 75: cfsetispeed(&option, B75);
cfsetospeed(&option, B75);break;
case 150: cfsetispeed(&option, B150);
cfsetospeed(&option, B150); break;
case 300: cfsetispeed(&option, B300);
cfsetospeed(&option, B300); break;
case 600: cfsetispeed(&option, B600);
cfsetospeed(&option, B600); break;
case 1200: cfsetispeed(&option, B1200);
cfsetospeed(&option, B1200); break;
case 2400: cfsetispeed(&option, B2400);
cfsetospeed(&option, B2400); break;
case 4800: cfsetispeed(&option, B4800);
cfsetospeed(&option, B4800); break;
case 9600: cfsetispeed(&option, B9600);
cfsetospeed(&option, B9600); break;
default: cfsetispeed(&option, B9600);
cfsetospeed(&option, B9600); break;
}
// réglage du nombre de bytesde données
option.c_cflag |= CS8;
// réglage de la parité
option.c_cflag &= ~ CSTOPB;
// Caracteres immediatement disponibles
option.c_cc[VMIN] = 1;
option.c_cc[VTIME] = 0;
// Sauvegarde des nouveaux parametres
tcsetattr(hCom,TCSANOW,&option);
// Passe en mode bloquant
fcntl(hCom,F_SETFL,fcntl(hCom,F_GETFL)&~O_NONBLOCK);
Partager