Pb RS232:Controle de Flux [Résolu]

LiaGalanodel 19 Messages postés mercredi 3 mars 2010Date d'inscription 29 juillet 2010 Dernière intervention - 26 juil. 2010 à 14:31 - Dernière réponse : LiaGalanodel 19 Messages postés mercredi 3 mars 2010Date d'inscription 29 juillet 2010 Dernière intervention
- 29 juil. 2010 à 16:11
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:
                //*** 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:
/* 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
Afficher la suite 

4 réponses

Répondre au sujet
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 29 juil. 2010 à 15:57
+3
Utile
Le simple fait d'activer l'option c_cflag va permettre de mettre un place le control de flux RTS/CTS. C'est ce qu'on appelle du "hardware handshaking".
Tu as aussi le software handshaking qui s'utilise via l'activation de l'option XON/XOFF, mais il est bcp plus lent.

Le mieux est que tu te fasses un petit projet qui met en oeuvre les elements de base (connexion, envoi de data, reception de data, fermeture de la connexion). Ca t'aidera surement a mieux comprendre comment tout cela fonctionne.


Shell
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de DeAtHCrAsH
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 26 juil. 2010 à 16:51
0
Utile
Salut,

Je t'invite a consulter ce lien sur lequel tu trouveras surement ton bonheur :
http://www.easysw.com/~mike/serial/serial.html

Pour ce qui est du control de flux il y a un petit passage en bas de page :

[i]Some versions of UNIX support hardware flow control using the CTS (Clear To Send) and RTS (Request To Send) signal lines. If the CNEW_RTSCTS or CRTSCTS constants are defined on your system then hardware flow control is probably supported. Do the following to enable hardware flow control:

options.c_cflag |= CNEW_RTSCTS; /* Also called CRTSCTS */

Similarly, to disable hardware flow control:

options.c_cflag &= ~CNEW_RTSCTS;/i

Bon courage,

Shell
Commenter la réponse de DeAtHCrAsH
LiaGalanodel 19 Messages postés mercredi 3 mars 2010Date d'inscription 29 juillet 2010 Dernière intervention - 29 juil. 2010 à 09:12
0
Utile
Merci beaucoup pour la réponse mais j'avous que j'ai un peu de mal quand même a savoir comment arriver a configurer les signaux en handshake...
Commenter la réponse de LiaGalanodel
LiaGalanodel 19 Messages postés mercredi 3 mars 2010Date d'inscription 29 juillet 2010 Dernière intervention - 29 juil. 2010 à 16:11
0
Utile
Alors là! Merci beaucoup beaucoup pour ta réponse simple et clair!

Je comprend mieux tout les tutoriels que je lis depuis quelques jours. Je n'avais pas vraiment compris ça.

Bref encore merci.

Bonne journée a toi.
Commenter la réponse de LiaGalanodel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.