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

Linux Discussion :

[C++] Problemes RS232 avec les controles de flux


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut [C++] Problemes RS232 avec les controles de flux
    Bonjour a tous.

    Je me présente Amélie, 21 ans, étudiante en licence mécatronique, j'ai un petit problème avec le contrôle de flux dans une liaison RS232 avec le langage C++.
    Enfaite j'aimerais pouvoir transposer ce code sous windows:
    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
    Code C/C++ :
     
                    //*** Serial Comm. speed & format
                    ControlBlock.BaudRate = nBaudRate;
                    ControlBlock.Parity = PARITY;
                    ControlBlock.ByteSize = BYTESIZE;
                    ControlBlock.StopBits = STOPBITS;
     
                    //*** RTS / CTS
                    if (bRTS_CTS==TRUE)
                    {
                                   ControlBlock.fRtsControl = RTS_CONTROL_HANDSHAKE;
                                   ControlBlock.fOutxCtsFlow = TRUE;
                    }
                    else
                    {
                                   ControlBlock.fRtsControl = RTS_CONTROL_ENABLE;
                                   ControlBlock.fOutxCtsFlow = FALSE;
                    }
     
     
                    //*** DSR/DTS
                    ControlBlock.fDtrControl = DTR_CONTROL_ENABLE;
                    ControlBlock.fOutxDsrFlow = FALSE;
     
                    //*** XON / XOFF Off
                    ControlBlock.fOutX = FALSE;
                    ControlBlock.fInX = FALSE;

    Vers un code sous linux.
    Le problème c'est que je ne trouve pas de fonction permettant de configurer les signaux RTS et DTR. Enfaite je ne trouve pas grand chose a part une fonction dans termios.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /* Controle de flux hardware RTS/CTS)*/
    Config.c_cflag |= (CREAD | CRTSCTS)
    Mais ça ne me permet pas de le mettre en mode HANDSHAKE oua utre.

    Je suis complétement bloqué donc si vous avez des idées n'hésitez pas je vous en serais vraiment reconnaissante.

    A votre disposition pour d'autre renseignements.

    Merci.

    Amélie

  2. #2
    Membre expérimenté Avatar de Rupella
    Inscrit en
    Février 2005
    Messages
    286
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 286
    Par défaut
    Hello,

    La gestion des ports série sous Windows est particulière... On n'accède pas au matériel comme ça.

    Regarde du coté de la FAQ C++ Win32.

    http://cpp.developpez.com/faq/vc/?pa...WithSerialPort

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Merci pour ta réponse.

    Le problème c'est que j'ai très bien compris sous windows comment faire mais j'aimerais pouvoir faire la même chose sous linux et là je ne trouve de fonction qui me permettrais par exemple d'utiliser le handshake.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par LiaGalanodel Voir le message
    Merci pour ta réponse.

    Le problème c'est que j'ai très bien compris sous windows comment faire mais j'aimerais pouvoir faire la même chose sous linux et là je ne trouve de fonction qui me permettrais par exemple d'utiliser le handshake.
    google "posix serial rs232"

    la première page trouvée :

    http://www.easysw.com/~mike/serial/serial.html#5_1_2

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2010
    Messages : 62
    Par défaut
    Merci pour la réponse.

    Je ne dois pas être très doué car je ne trouve aucun moyen de mettre le DTR ou le RTS en disable et le DTR et le RTS en handshake.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par LiaGalanodel Voir le message
    Merci pour la réponse.

    Je ne dois pas être très doué car je ne trouve aucun moyen de mettre le DTR ou le RTS en disable et le DTR et le RTS en handshake.
    expliquez plus clairement quels appareils vous voulez faire communiquer ensemble, avec quel protocole, et surtout quel câble…

    de ce que je me souviens de la communications série, c'est qu'il faut mieux être clair et évitez de mélanger des protocoles de communication…

    en général DTR n'est pas utilisé explicitement côté code en RS232… (il est mis ON par le chip série lorsqu'on ouvre le port… et OFF quand on le ferme…)
    en RS422 il sert parfois à recevoir le signal d'une clock pour atteindre des baud rates élevés…

    soit vous communiquez en handshake soft (ACK/NACK ou XON/XOFF) et un câble minimal de 3 brins suffit (croisé ou non suivant les appareils qui communiquent, parfois avec DTR ponté au DSR, parfois au CTS…)

    soit vous communiquez en handshake hardware CTS/RTS et il faut alors 5 brins minimum…

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

Discussions similaires

  1. Probleme avec les controles
    Par han75 dans le forum SharePoint
    Réponses: 0
    Dernier message: 22/05/2008, 16h24
  2. probleme Struts avec les CSS
    Par ayoub2010 dans le forum Struts 1
    Réponses: 11
    Dernier message: 02/04/2007, 16h43
  3. probleme asp avec les requêtes
    Par 0kiss0 dans le forum ASP
    Réponses: 4
    Dernier message: 10/03/2007, 18h05
  4. Probleme Struts avec les beans
    Par GTJuanpablo dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/01/2007, 16h04
  5. probleme mysql avec les tableaux
    Par bilane dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/09/2006, 11h57

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