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

C++ Discussion :

Gestion du RTS d'un port série


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Gestion du RTS d'un port série
    Bonjour,

    Attention, c'est un problème technique assez pointu !

    Je développe en Builder C++ sous Windows XP.
    Mon application pilote un port série pour dialoguer avec un indicateur de poids (une balance) en RS485 2 fils.
    Côté matériel j'ai donc un convertisseur RS232 / RS485 entre le PC et l'indicateur de poids.
    La prise de ligne se fait par le signal RTS : lors de l'envoi de la trame de requête, le signal RTS 'monte' (la ligne RS485 est donc prise), puis le RTS retombe dès que le dernier caractère a été émis (la ligne RS485 est libérée), l'indicateur de poids peut alors répondre.
    Ce fonctionnement du RTS est entièrement géré par l'API Windows.
    Pour cela j'utilise les fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //ouverture du port série : 
    hdcom=CreateFile(comx,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
    //Reset du port :
    ClearCommError(hdcom,&pErr,NULL);
    //Init du port série :
    SetCommState(hdcom,&dcb);
    //Envoie des données :
    crw = WriteFile(hdcom,buffer,len,&nbcarecrits,NULL);
    //Lecture de la réponse :
    crr = ReadFile(hdcom,buffer,len,&nbcarlus,NULL);
    Voici mon problème :
    Si mon application est le seul programme lancé sur le PC, je me retrouve avec des erreurs de réception.
    Je lance une autre application (Google Earth par exemple), la liaison fonctionne correctement.
    J'ai réalisé d'autres essais :
    utilisation du port série de la carte mère (pilote Microsoft) ou utilisation d'une carte série multivoies (pilote MOXA) : idem.
    lancement d'une autre application que Google Earth : idem, à partir du moment qu'elle consomme un peu de mémoire.
    essais sur un autre PC, d'une autre marque : idem.
    essais en liaison avec un automate programmable en RS485 2 fils : idem.

    J'ai branché l'oscilloscope pour visualiser le signal RTS et le signal de réponse de l'indicateur de poids (côté 5V sur la carte de l'appareil) : lorsque mon application est seule à tourner sur le PC, le RTS retombe trop tard (l'indicateur a déjà commencé à répondre).
    Si une autre application est lancée, le signal RTS retombe plus tôt et la liaison fonctionne correctement.

    Bien sûr, la solution technique est d'utiliser un convertisseur RS232 / RS485 qui gère le retournement tout seul, sans avoir besoin du RTS.
    Mais j'aimerais bien conserver mes convertisseurs actuels et surtout comprendre le phénomène.

    Si quelqu'un a une idée, je suis preneur.

  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
    Quelques pistes car mes souvenirs RS232 et 485 remontent un peu :
    1/ Positionnement de fRtsControl de dcb?
    2/ SetCommMask (EV_TXEMPTY?)
    3/ WaitCommEvent ?

    [EDIT] : Après tu dois pouvoir gérer le RTS tout seul avec EscapeCommFunction(CLRRTS/SETRTS)...

Discussions similaires

  1. Port série en C++ : Gestion des CTS/RTS
    Par Racailloux dans le forum C++
    Réponses: 3
    Dernier message: 13/05/2008, 14h51
  2. Api pour la gestion du port série et JRE sur un ancêtre
    Par Orian dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 29/01/2007, 18h22
  3. Gestion Port Série
    Par Tocraz dans le forum Qt
    Réponses: 2
    Dernier message: 18/11/2006, 19h15
  4. [CCom] Gestion du port série
    Par Marthym dans le forum MFC
    Réponses: 6
    Dernier message: 23/11/2005, 09h53
  5. Gestion du port série
    Par Aradesh dans le forum MFC
    Réponses: 5
    Dernier message: 18/10/2005, 16h43

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