Pb RS232:Controle de Flux

Résolu
LiaGalanodel Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 29 juillet 2010 - 26 juil. 2010 à 14:31
LiaGalanodel Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre 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
A voir également:

4 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
29 juil. 2010 à 15:57
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
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
26 juil. 2010 à 16:51
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
0
LiaGalanodel Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 29 juillet 2010 1
29 juil. 2010 à 09:12
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...
0
LiaGalanodel Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 29 juillet 2010 1
29 juil. 2010 à 16:11
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.
0
Rejoignez-nous