Was ist der Unterschied zwischen der Hardware-Flusskontrolle von DTR / DSR und RTS / CTS? Wann wird jeder verwendet? Warum benötigen wir mehr als eine Art von Hardware-Flusskontrolle? :) :)
Antworten:
Es gibt mehrere Möglichkeiten, Dinge zu tun, da in den Standards nie Protokolle eingebaut waren. Sie verwenden den Ad-hoc-Standard, den Ihre Geräte implementieren.
Nur basierend auf den Namen scheint RTS / CTS eine natürliche Passform zu sein. Es ist jedoch rückwärts von den Bedürfnissen, die sich im Laufe der Zeit entwickelt haben. Diese Signale wurden zu einem Zeitpunkt erzeugt, zu dem ein Terminal einen Bildschirm voller Daten stapelweise sendete, der Empfänger jedoch möglicherweise nicht bereit war, sodass eine Flusskontrolle erforderlich war. Später würde sich das Problem umkehren, da das Terminal nicht mit den vom Host kommenden Daten Schritt halten konnte, die RTS / CTS-Signale jedoch in die falsche Richtung weisen - die Schnittstelle ist nicht orthogonal und es gibt keine entsprechenden Signale in die andere Richtung. Die Gerätehersteller passten sich so gut sie konnten an, einschließlich der Verwendung der DTR- und DSR-Signale.
BEARBEITEN
Um ein bisschen mehr Details hinzuzufügen, ist es eine zweistufige Hierarchie, so dass "offiziell" beide stattfinden müssen, damit die Kommunikation stattfinden kann. Das Verhalten ist im ursprünglichen CCITT-Standard (jetzt ITU-T) V.28 definiert.
Das DCE ist ein Modem, das eine Verbindung zwischen dem Terminal und dem Telefonnetz herstellt. Im Telefonnetz befand sich ein weiteres Gerät, das sich zum Datennetz abspaltete, z. X.25.
Das Modem hat drei Zustände: Ausschalten, Bereit ( Datensatz bereit ist wahr) und verbunden ( Datenträgererkennung )
Das Terminal kann nichts tun, bis das Modem angeschlossen ist.
Wenn das Modem Daten senden möchte, löst es RTS aus und das Modem gewährt die Anforderung mit CTS. Das Modem senkt CTS, wenn sein interner Puffer voll ist.
So nostalgisch!
Der Unterschied zwischen ihnen besteht darin, dass sie unterschiedliche Stifte verwenden. Im Ernst, das war's. Der Grund, warum beide existieren, ist, dass RTS / CTS ursprünglich nie ein Flusskontrollmechanismus sein sollte; Es war für Halbduplex-Modems, zu koordinieren, wer sendete und wer empfing. RTS und CTS wurden so oft für die Flusskontrolle missbraucht, dass sie zum Standard wurden.
Ein wichtiger Unterschied besteht darin, dass einige UARTs (insbesondere 16550) den Empfang von Zeichen sofort einstellen, wenn ihr Host sie anweist, DSR auf inaktiv zu setzen. Im Gegensatz dazu werden weiterhin Zeichen empfangen, wenn CTS inaktiv ist. Ich glaube, dass die Absicht hier ist, dass DSR anzeigt, dass das Gerät nicht mehr lauscht und das Senden weiterer Zeichen sinnlos ist, während CTS anzeigt, dass ein Puffer voll wird; Letzteres ermöglicht eine bestimmte Menge an "Schleudern", bei der die Flusssteuerungsleitung ihren Zustand zwischen der DTE-Abtastung und dem nächsten übertragenen Zeichen geändert hat. In (relativ) späteren Geräten, die ein Hardware-FIFO unterstützen, ist es möglich, dass eine Anzahl von Zeichen übertragen wird, nachdem die DCE CTS auf inaktiv gesetzt hat.