probleme de communication série

probleme de communication série - C - Programmation

Marsh Posté le 07-07-2009 à 10:25:38    

--------------------------------------------------------------------------------
 
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 :
  1. struct termios Init_ComPort(int &fd)
  2. {
  3. struct termios oldone, newone;
  4. fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
  5. if(fd < 0) gtk_main_quit();
  6. fcntl(fd, F_SETFL, 0);
  7. tcgetattr(fd, &oldone);
  8. bzero(&newone, sizeof(newone));
  9. cfsetispeed(&newone, B19200);
  10. cfsetospeed(&newone, B19200);
  11. newone.c_cflag =(CS8 | CLOCAL | CREAD) ;
  12. newone.c_iflag = IGNPAR;
  13. newone.c_oflag = 0;
  14. newone.c_lflag = 0;
  15. newone.c_cc[VMIN] = 0;
  16. newone.c_cc[VTIME] = 20;
  17. tcflush(fd, TCIFLUSH);
  18. tcsetattr(fd, TCSANOW, &newone);
  19. return oldone;
  20. }
  21. void Close_ComPort(int &fd, struct termios &old)
  22. {
  23. tcsetattr(fd, TCSANOW, &old);
  24. close(fd);
  25. }
  26. void OnClick(GtkWidget *pWidget, gpointer pData)
  27. {
  28. GtkWidget *pdialog;
  29. int *pfd = (int*)pData;
  30. int fd = *pfd;
  31. char retour[6]= {0,0,0,0,0,0};
  32. tcflush(fd, TCIFLUSH);
  33. int n = write(fd, "AAA",3);
  34. int i = read(fd,retour, 3);
  35. retour[3] = 0;
  36. 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);
  37. gtk_dialog_run(GTK_DIALOG(pdialog));
  38. gtk_widget_destroy(pdialog);
  39. }

Reply

Marsh Posté le 07-07-2009 à 10:25:38   

Reply

Marsh Posté le 11-07-2009 à 16:35:42    

Flow91 a écrit :


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.


Quel est ton système ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 26-07-2009 à 22:06:49    

j'ai eu exactement le même problème, mais en réalité c'est très facile à récupérer, je crois que tu t'inquiètes pour rien, là...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed