IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Problème com série


Sujet :

Langage C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Points : 53
    Points
    53
    Par défaut Problème com série
    Bonjour, je développe actuellement une application qui devra me permettre de communiquer avec un matériel connecté par liaison série sur mon ordinateur (je simule un "protocole" maître esclave).
    Mon matériel a un bus en rs485 que je fais passer dans un adaptateur rs485->rs232 puis l'ordinateur doit simuler l'esclave.
    Lorsque j'envoie un caractère en boucle depuis l'esclave et que j'ouvre un hyperterminal, je reçois bien les caractères, mais quand je veux les récupérer par du code (donc dans une console), il ne capte plus aucun caractères.
    Mon code pour l'affichage en console est le suivant:
    Ouverture de la com:
    Code : C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Com = CreateFile(
                     L"COM1:", 
                     GENERIC_READ|GENERIC_WRITE,
    	         0,
    		 NULL,
    		 OPEN_EXISTING,
    		 0,
    		 NULL);
    if(Com == INVALID_HANDLE_VALUE)
    	{
          printf("Erreur...\n");
    	}
    	else
    	{
    		printf("function Init()        \t   [OK]\n");			
    	}
    Ici j'ai bien function Init() [OK].

    Ensuite, le code que je compile pour lire sur la ligne est le suivant:
    Code : C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    DWORD nRead;
    while(1)
    {
       cMyChar = '0';
       if(ReadFile(Com,
                   &cMyChar, //cMyChar vaut 0 du a son initialisation mais ne change pas
    	       1,
    	       &nRead, //ici nRead vaut 0, ce qui n'est pas normal
    	       0))
       {
          if(nRead)
          {
             printf("%c\n",cMyChar);
    	 //cMyChar++;
          }
          else //donc le code passe ici et m'affiche l'erreur
          {
          printf(
                 "No Char Received before %d ms\n",
    	      xTimeOut.ReadIntervalTimeout); //le timeout est de 10000 ms 
          }
     
       }
       else
       {
          printf("No Char Received before %lX ms\n",xTimeOut.ReadIntervalTimeout); //le timeout est de 10000 ms
       }
    ps: Toutes les variables et attributs sont définis, je n'ai pas d'erreur de syntaxe
    ps2: L'hyperterminal est fermé lorsque je compile
    Je ne comprend donc pas pourquoi je ne peux pas récupérer mes caractères pourtant bien réceptionnés par le port série et affichés dans le terminal.

    Merci d'avance pour vos éventuelles réponses.
    Cordialement
    (l'écriture des caractères se fait en boucle infinie dans mon matériel maître)

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Une hypothèse : les config ne sont pas les mêmes (baudrate, parity, etc.) ?
    [EDIT] : Le MSDN est à peu près bien fait sur le sujet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Points : 53
    Points
    53
    Par défaut
    merci pour la réponse, effectivement, il est possible que j'ai oublié la configuration du contrôle de flux qui est configurée à none et qui par défaut doit être matérielle il me semble...
    Je vous redis

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Points : 53
    Points
    53
    Par défaut
    Résolu
    J'avais en fait un problème avec un pointeur d'objet

    Merci à vous Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD12] Problème COM série
    Par rems033 dans le forum WinDev
    Réponses: 2
    Dernier message: 14/04/2009, 14h06
  2. problème port série
    Par -WanG- dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 09/12/2008, 16h15
  3. Réponses: 3
    Dernier message: 29/05/2008, 14h08
  4. Problème Port Série
    Par orj30754 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/11/2007, 12h30
  5. [COM] Problème COM et PHP
    Par goldeneagle dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/09/2005, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo