Flow91 | --------------------------------------------------------------------------------
Bonjour, J'ai un probleme pour ecrire sur le port série de mon pc.
J'ai fais ce code ci dessous via une documentation que j'ai trouvé.
Pourtant quand j'ecris dessus, la fonction write me renvoi la valeur -1.
Je ne sais pas d'où ca peut venir.
Sachant que j'execute Init_ComPort en premier, puis le onClick correspond à quand l'utilisateur clique sur un bouton.
J'espere que quelqu'un pourra m'aider.
Florent
Code :
- struct termios Init_ComPort(int &fd)
- {
- struct termios oldone, newone;
- fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
- if(fd < 0) gtk_main_quit();
- fcntl(fd, F_SETFL, 0);
- tcgetattr(fd, &oldone);
- bzero(&newone, sizeof(newone));
- cfsetispeed(&newone, B19200);
- cfsetospeed(&newone, B19200);
- newone.c_cflag =(CS8 | CLOCAL | CREAD) ;
- newone.c_iflag = IGNPAR;
- newone.c_oflag = 0;
- newone.c_lflag = 0;
- newone.c_cc[VMIN] = 0;
- newone.c_cc[VTIME] = 20;
- tcflush(fd, TCIFLUSH);
- tcsetattr(fd, TCSANOW, &newone);
- return oldone;
- }
- void Close_ComPort(int &fd, struct termios &old)
- {
- tcsetattr(fd, TCSANOW, &old);
- close(fd);
- }
- void OnClick(GtkWidget *pWidget, gpointer pData)
- {
- GtkWidget *pdialog;
- int *pfd = (int*)pData;
- int fd = *pfd;
- char retour[6]= {0,0,0,0,0,0};
- tcflush(fd, TCIFLUSH);
- int n = write(fd, "AAA",3);
- int i = read(fd,retour, 3);
- retour[3] = 0;
- pdialog = gtk_message_dialog_new( NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,"Caracteres envoyes : %i\nCaracteres recu : %i, %s",n,i, retour);
- gtk_dialog_run(GTK_DIALOG(pdialog));
- gtk_widget_destroy(pdialog);
- }
|
|