#include #include #include #include #include #include //#include #include #include #include #include #include unsigned char serial (int fd); void close_serial(int fd); int z; int serial_fd; struct termios saveterm; int init_serial(char * device, int speed) { struct termios new; int fd=open(device,O_RDWR|O_NOCTTY); if(fd<0){perror(device); exit(-1);} tcgetattr(fd,&saveterm); /* save current port settings */ bzero(&new,sizeof(new)); new.c_cflag=CLOCAL|CREAD|speed|CS8; new.c_iflag=0; new.c_oflag=0; new.c_lflag=0; /* set input mode (non-canonical, no echo,...) */ new.c_cc[VTIME]=0; /* inter-character timer unused */ new.c_cc[VMIN]=1; /* blocking read until 1 char received */ tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&new); return fd; } void close_serial(int fd){ tcsetattr(fd,TCSANOW,&saveterm); close(fd); } unsigned char get_serial(int fd) { char data; read(fd,&data,1); return data; } void send_serial(int c, int fd) { write(fd, &c,1); } void gestion_mps() { int stop =0; char lastmessage=0; while(stop==0) { system("clear"); printf("\n\n\n\n\n\n________________________________________________________________________________\n"); printf(" choississez le mode du mps\n \n"); printf(" entrez le numéro correspondant au choix :\n\n "); printf(" 0 : La machine se comportera en Base station \n "); printf(" 1 : La machine se comportera en cap station \n "); printf(" 2 : La machine se comportera en ring station \n "); printf(" 3 : La machine se comportera en delivery station \n "); printf(" 4 : La machine est à l'arret \n "); printf(" 5 : Démarrage, les deux feux clignotent. \n "); printf(" 6 : Mettre la machine en marche \n "); printf(" 7 : Simuler l'etat occupé \n "); printf(" 8 : Fin du traitement d'objet : reprise \n"); scanf("%d",&z); if (z != lastmessage) { lastmessage=z; send_serial(z,serial_fd); } } } void fermetures() { close_serial(serial_fd); } int main() { serial_fd=init_serial("/dev/ttyACM0",B9600); gestion_mps(); fermetures(); return 0; }