Et à la fin de ton programme, tu réinjectes la configuration_originale dans le descripteur de fichier.
Dans mon cas, j'utilise le /dev/ttyS0 de manière brute càd sans contrôle, d'où l'utilisation de la fonction cfmakeraw. Ensuite tu lis et ecris comme dans un fichier régulier sans te soucier de la position du curseur. N'hésites pas à poster si tu continus de rencontrer des problêmes.
[^] # Re: Un peu de code
Posté par teddy311 . En réponse au message Port serie, Asynchrone, Thread. Évalué à 1.
struct termios configuration_originale; struct termios configuration_nouvelle; memset(&configuration_originale, 0, sizeof(struct termios)); memset(&configuration_nouvelle, 0, sizeof(struct termios)); fd = open(fichier.c_str(), O_RDWR | O_NOCTTY ); if (fd<0) { perror(fichier.c_str()); return false; } if(tcgetattr(fd, &configuration_nouvelle) != 0) { return false; } memcpy(&configuration_originale, &configuration_nouvelle, sizeof(struct termios)); cfmakeraw(&configuration_nouvelle); configuration_nouvelle.c_cflag &= ~PARENB; configuration_nouvelle.c_cflag |= B9600 | CSTOPB | CLOCAL | CS8 | CREAD; configuration_nouvelle.c_iflag = IGNPAR; configuration_nouvelle.c_oflag = 0; configuration_nouvelle.c_cc[VMIN] = 0; /* nb caractères en attentes */ configuration_nouvelle.c_cc[VTIME] = 100; /* en dixiemes de secondes */ if(tcsetattr(fd, TCSANOW, &configuration_nouvelle) != 0) { return false; }Et à la fin de ton programme, tu réinjectes la configuration_originale dans le descripteur de fichier. Dans mon cas, j'utilise le /dev/ttyS0 de manière brute càd sans contrôle, d'où l'utilisation de la fonction cfmakeraw. Ensuite tu lis et ecris comme dans un fichier régulier sans te soucier de la position du curseur. N'hésites pas à poster si tu continus de rencontrer des problêmes.