Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1730 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Communication entre un microcontroleur et un port RS232

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Communication entre un microcontroleur et un port RS232

n°2064634
hppp
Serveur@home
Posté le 18-03-2011 à 14:24:37  profilanswer
 

Bonjour à tous
 
Je voudrais communiquer avec un programme en C sous linux avec un micro-controleur. J'ai des trames en Hexa à lui envoyer sur le port RS232 et le micro-controleur doit me répondre après. Je veux donc ouvrir le port série, envoyer des trames en hexa, en recevoir après en hexa et refermer le port.
 
J'ai jamais interrogé un port RS232 en C. J'ai regaré comment faire et il semble possible de le faire avec fopen(), fprintf() etc... mais j'ai également trouvé une librairie RS-232 for Linux and WIN32. Vous me conseilliez de partir sur une librairie ou d'utiliser fopen(), fprintf() etc...?

mood
Publicité
Posté le 18-03-2011 à 14:24:37  profilanswer
 

n°2064694
esox_ch
Posté le 18-03-2011 à 17:28:45  profilanswer
 

C'est quoi pour un micro?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2064732
hppp
Serveur@home
Posté le 18-03-2011 à 19:37:27  profilanswer
 

Comment ça c'est quoi pour un mirco?
 
Je viens de faire des tests avec ce bout de programme :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <termios.h>
  7. int main(void)
  8. {
  9. int port_serie;
  10. struct termios options;
  11. int donnee = 0;
  12. int *pointeur = &donnee;
  13. port_serie = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
  14. if(port_serie < 0)
  15. {
  16.  perror("Port serie ouvert" );
  17.  exit(-1);
  18. }
  19. else
  20. {
  21.  printf("Port serie bien ouvert. \n" );
  22.  fcntl(port_serie,F_SETFL,0);
  23.  tcgetattr(port_serie, &options);
  24.  cfsetospeed(&options, B9600);
  25.  options.c_cflag |= (CLOCAL | CREAD);
  26.  options.c_cflag &= ~PARENB;
  27.  options.c_cflag &= ~CSTOPB;
  28.  options.c_cflag &= ~CSIZE;
  29.  options.c_cflag |= CS8;
  30.  tcsetattr(port_serie, TCSANOW, &options);
  31.  printf("Configuration OK !. \n" );
  32.  printf("Envoie de donnee en cours ... \n" );
  33.  if (write(port_serie, "salut", 5) < 0){perror("write:" );}
  34.  //if(read(port_serie, pointeur, 100) < 0) {perror("read" );}
  35.  printf("Envoie termine. \n" );
  36. }
  37. close(port_serie);
  38. }


 
Pour faire mes tests j'ai connecté un PC linux avec un pc xp où j'ai lancé l'hyperterminal. Je reçois bien dans l'hyperteminal "salut" mais je n'arrive pas à recevoir de donné quand je commente la ligne "write" et décommente la ligne "read". Avez vous une idée? Merci

n°2065539
xilebo
noone
Posté le 23-03-2011 à 15:55:24  profilanswer
 

Citation :

O_NONBLOCK ou O_NDELAY
              Le fichier est ouvert en mode "non-bloquant". Ni la
              fonction open ni aucune autre opération  ultérieure
              sur ce fichier ne laissera le processus appelant en
              attente.


 
Ta lecture est non bloquante. Si tu recois les données avant d'avoir ouvert le port ou après avoir fait l'appel à read, tu ne recevras rien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Communication entre un microcontroleur et un port RS232

 

Sujets relatifs
Communication sécurisée client/serveur[sh] écoute d'un port réseau et analyse du contenu récupéré
Ajout de port imprimante TCP/IP Lexmark en vbsForcer le port source en TCP/IP client
Limitation du nombre de connexions sur un portCommunication Bluetooth avec un stéthoscope électronique
Problème communication SOCKET Réseau TCP/IPCommunication PC <-> Arduino en Bluetooth
communication avec un tpeSMTP = localhost smtp_port = 25 ? comment les reglés?
Plus de sujets relatifs à : Communication entre un microcontroleur et un port RS232


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR