Quelle est la différence entre le contrôle de flux matériel DTR/DSR et RTS/CTS? Quand est-ce que chacun est utilisé? Pourquoi avons-nous besoin de plus d'un type de contrôle de flux matériel? :)
Il y a plusieurs façons de faire les choses car il n'y a jamais eu de protocoles intégrés dans les normes. Vous utilisez tout "standard" ad-hoc que votre équipement implémente.
En se basant simplement sur les noms, RTS/CTS semblerait être un choix naturel. Cependant, cela revient en arrière par rapport aux besoins qui se sont développés avec le temps. Ces signaux ont été créés à un moment où un terminal envoyait par lots un écran rempli de données, mais le récepteur n'était peut-être pas prêt, d'où la nécessité d'un contrôle de flux. Plus tard, le problème serait inversé, le terminal ne pouvant pas suivre les données en provenance de l'hôte, mais les signaux RTS/CTS vont dans le mauvais sens: l'interface n'est pas orthogonale et aucun signal correspondant ne va dans l'autre sens. Les équipementiers se sont adaptés au mieux, notamment en utilisant les signaux DTR et DSR.
[~ # ~] éditer [~ # ~]
Pour ajouter un peu plus de détails, c'est une hiérarchie à deux niveaux, donc "officiellement" les deux doivent se passer pour que la communication ait lieu. Le comportement est défini dans la norme V.28 du CCITT (à présent ITU-T).
Le DCE est un modem reliant le terminal au réseau téléphonique. Dans le réseau téléphonique se trouvait un autre équipement qui s’est séparé du réseau de données, par exemple. X.25.
Le modem a trois états: Éteint, Prêt ( Ensemble de données prêt est vrai) et connecté ( Détection de porteuse de données)
Le terminal ne peut rien faire tant que le modem n'est pas connecté.
Lorsque le modem veut envoyer des données, il soulève la RTS et le modem accepte la requête avec CTS. Le modem abaisse le CTS lorsque son tampon interne est plein.
Tellement nostalgique!
La différence entre eux est qu'ils utilisent des broches différentes. Sérieusement, c'est ça. La raison pour laquelle ils existent tous les deux est que RTS/CTS n'était pas censé être un mécanisme de contrôle de flux, à l'origine; c'était aux modems semi-duplex de coordonner qui envoyait et qui recevait. RTS et CTS ont été tellement mal utilisés pour le contrôle de flux qu’ils sont devenus standard.
Une différence importante est que certains UART (16550 notamment) cesseront de recevoir des caractères immédiatement si leur hôte leur demande de désactiver le DSR. En revanche, les caractères seront toujours reçus si CTS est inactif. Je pense que l'intention ici est que DSR indique que le périphérique n'écoute plus et que l'envoi de nouveaux caractères est donc inutile, alors que CTS indique qu'un tampon est en train de se remplir; ce dernier permet un certain "dérapage" lorsque la ligne de contrôle de flux a changé d'état entre l'ETTD qui l'échantille et le prochain caractère transmis. Dans les périphériques (relativement) ultérieurs prenant en charge un matériel FIFO, il est possible qu'un certain nombre de caractères soient transmis après que l'ETCD a désactivé le mode CTS.