Réponse acceptée !
Xon/Xoff se gère dans les paramètres
DCB du port. Cela sert au contrôle de flux software
[ Lien ]XonChar : octet à envoyer pour autoriser l'envoi de données.
XoffChar : octet à envoyer pour interdire l'envoi de données.
XonLim : limite basse pour le contrôle de flux.
XoffLim : limite haute pour le contrôle de flux.
fOutX : TRUE pour activer le contrôle de flux en émission.
fInX : TRUE pour activer le contrôle de flux en réception.
fTXContinueOnXoff : FALSE.
La taille des buffers est configurées par
SetupComm
[ Lien ]Comment ça marche :
Soit A le PC et B un appareil connecté au port série.
Si tout va bien A et B s'échange des données.
- cas 1 : B ne peut plus recevoir de donées
B envoi
XoffChar à A.
A le reçoit et stoppe immédiatement l'envoi de donnée.
- cas 2 : B peut à nouveau recevoir des données :
B envoi
XonChar à A.
A le reçoit et reprend immédiatement l'envoi de donnée.
- cas 3 : le buffer de réception de A est bien rempli et il reste moins de
XoffLim de libre.
A envoi
XoffChar à B.
B le reçoit et stoppe immédiatement l'envoi de donnée.
- cas 4 : le buffer de réception de A se vide et il y a moins de
XonLim d'utilisé.
A envoi
XonChar à B.
B le reçoit et reprend immédiatement l'envoi de donnée.
Tout cela est géré automatiquement par le driver. Il suffit simplement de configurer le port par SetupUpComm et SetCommState (avec la structure DCB).
Les autres membres de la structure DCB peuvent être repris dans mes différentes sources.