Hardware-Unterstützung für RTS / CTS kann vorteilhaft und manchmal notwendig sein, abhängig davon, wie viel "Vorankündigung" ein Gerät geben kann, wenn es ein sendendes Gerät zum Abhalten benötigt. Wenn ein empfangendes Gerät keine Hardwareunterstützung für die automatische Freigabe von RTS bietet, muss es sicherstellen können, dass eingehende Zeichen immer bedient werden können, bevor der Hardwarepuffer überlaufen kann. Wenn ein Gerät keine Hardware-Unterstützung für das Halten von CTS hat, muss vermieden werden, dass dem UART mehr Zeichen zugeführt werden, als der Empfänger nach dem Loslassen von RTS verarbeiten kann.
Wenn sowohl Sender als auch Empfänger Hardware-Unterstützung für RTS / CTS bieten, können sie auch dann zuverlässig kommunizieren, wenn der Empfänger nur über einen Einzelzeichenpuffer verfügt und die Empfängersoftware manchmal eine Weile braucht, um auf eingehende Daten zu reagieren (falls die Der Empfänger würde Daten beim Empfang des zweiten vollständigen Bytes löschen. Er müsste RTS wie beim Empfang des ersten Bytes freigeben, was die Leistung beeinträchtigen würde. Wenn er keine Daten löschen würde, es sei denn / bis das Startbit eines dritten Bytes eintrifft könnte RTS aktiviert lassen, bis es das zweite empfängt). Wenn dem Empfänger die Hardware-RTS-Unterstützung fehlt, ist eine zuverlässige Kommunikation nur möglich, wenn der Empfängerpuffer alles aufnehmen kann, was möglicherweise ankommt, während er nicht auf eingehende Daten reagieren kann (z. B. weil er mit Interrupts mit höherer Priorität zu beschäftigt ist). Wenn der Empfänger Hardware-Unterstützung hat, der Absender jedoch nicht, ist eine zuverlässige Kommunikation möglich, jedoch nur, wenn die Absender-Software auf und ab geht, sodass der UART niemals mehr Daten erhält, als sicher übertragen werden können.
In Chips mit PLD-ähnlicher Funktionalität an einigen Pins kann es möglich sein, die rohe RTS-Unterstützung in Chips, die keine echte Hardwareunterstützung haben, zu verfälschen, indem ein Ausgang so programmiert wird, dass er automatisch hoch bleibt, wenn sich der serielle Empfangspin befindet niedrig. Dies hätte zur Folge, dass der Empfänger sich zu jedem Zeitpunkt, zu dem eine Übertragung beginnt, bereits meldet. Sobald die Software ein Byte empfängt, kann sie CTS erneut aktivieren, um den Absender darüber zu informieren, dass sie ein weiteres Byte übertragen kann. Die Leistung unter Verwendung eines solchen Ansatzes wäre wahrscheinlich schlecht, aber wenn ein Gerät, das weder Hardware-RTS-Unterstützung noch die Fähigkeit hat, gute Interrupt-Antwortzeiten zu gewährleisten, Daten von einem Gerät empfangen muss, das Daten sofort stoppt, wenn sein CTS (das RTS des Empfängers) freigegeben wird Ein solcher Ansatz könnte einen zuverlässigen Betrieb ermöglichen.
Ein anderer Ansatz, der manchmal in Fällen nützlich sein kann, in denen ein Gerät in vorhersehbaren Intervallen reagiert und nicht reagiert (z. B. weil es regelmäßig eine Aufgabe ausführt, für die jeweils 100% CPU ohne Unterbrechung für Millisekunden erforderlich ist), ist Damit ein Gerät RTS jederzeit freigibt, wenn es in einen nicht reagierenden Zustand versetzt wird, unabhängig davon, ob sein Empfangspuffer bereit ist, einige Daten zu akzeptieren. Das größte Problem bei diesem Ansatz besteht darin, dass, wenn ein Gerät nur zu bestimmten Zeiten zum Empfangen von Daten bereit ist und ein anderes Gerät nur zu bestimmten Zeiten zum Empfangen von Daten bereit ist, keine Daten gesendet werden, es sei denn, diese Zeiten stimmen überein.
Persönlich halte ich Hardware-RTS / CTS-Unterstützung für eine wertvolle Funktion, aber viele Chiphersteller scheinen dies nicht zu tun.Glücklicherweise reagieren FTDI-USB-zu-Seriell-Chips sehr gut auf diese Signale (andere können es auch, aber ich habe sie nicht getestet), sodass ein Gerät ohne Hardware-RTS / CTS-Unterstützung jeweils ein Byte anfordern kannRTS kurz aktivieren (ich bin mir nicht sicher, wie hoch die Mindestbreite sein würde), wenn die Empfängersoftware nach einem eingehenden Byte sucht und es kurz danach freigibt.Dies funktioniert zuverlässig, vorausgesetzt, RTS wird niemals versehentlich für mehr als ein Zeichenintervall gleichzeitig aktiviert.