#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
int main() {
/* Ouvrir le port série ttyS0 */
int serial_port = open("/dev/ttyUSB0", O_RDWR);
if (serial_port < 0) {
printf("Erreur lors de l'ouverture du port série: %s\n", strerror(errno));
return EXIT_FAILURE;
}
/* Struct pour configurer les paramètres du port série */
struct termios tty;
/* Lire les paramètres actuels du port série */
if (tcgetattr(serial_port, &tty) != 0) {
printf("Erreur lors de la lecture des attributs: %s\n", strerror(errno));
close(serial_port);
return EXIT_FAILURE;
}
/* Configurer la vitesse d'entrée et de sortie à 9600 bauds */
cfsetispeed(&tty, B9600);
cfsetospeed(&tty, B9600);
/* Configurer le nombre de bits de données (8 bits) */
tty.c_cflag &= ~CSIZE; // Clear les bits de taille de caractère
tty.c_cflag |= CS8; // 8 bits par mot
/* Configurer 2 bits de stop */
tty.c_cflag |= CSTOPB;
/* Désactiver la parité */
tty.c_cflag &= ~PARENB;
/* Désactiver le contrôle matériel (RTS/CTS)*/
tty.c_cflag &= ~CRTSCTS;
/* Activer la lecture, désactiver le contrôle local */
tty.c_cflag |= CREAD | CLOCAL;
/* Désactiver le mode canonique, l'écho, et la génération de signaux */
tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
/* Désactiver le contrôle de flux en entrée et en sortie */
tty.c_iflag &= ~(IXON | IXOFF | IXANY);
/* Configurer la sortie brute (Raw mode) */
tty.c_oflag &= ~OPOST;
/* Appliquer les paramètres au port série */
if (tcsetattr(serial_port, TCSANOW, &tty) != 0) {
printf("Erreur lors de l'application des attributs: %s\n", strerror(errno));
close(serial_port);
return EXIT_FAILURE;
}
printf("Configuration du port série réussie.\n");
/* Fermer le port série */
close(serial_port);
return EXIT_SUCCESS;
}