Pb RS232:Controle de Flux [Résolu]

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

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
- 29 juil. 2010 à 15:57
3
Merci
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

Merci DeAtHCrAsH 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de DeAtHCrAsH
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
- 26 juil. 2010 à 16:51
0
Merci
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
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Dernière intervention
29 juillet 2010
- 29 juil. 2010 à 09:12
0
Merci
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
Messages postés
19
Date d'inscription
mercredi 3 mars 2010
Dernière intervention
29 juillet 2010
- 29 juil. 2010 à 16:11
0
Merci
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.