Jaka jest różnica między sprzętową kontrolą przepływu DTR / DSR i RTS / CTS? Kiedy są używane? Dlaczego potrzebujemy więcej niż jednego rodzaju sprzętowej kontroli przepływu? :)
Odpowiedzi:
Jest wiele sposobów na zrobienie tego, ponieważ nigdy nie było żadnych protokołów wbudowanych w standardy. Używasz dowolnych „standardowych” ad-hoc narzędzi.
Opierając się na nazwach, RTS / CTS wydaje się być naturalnym dopasowaniem. Jednak jest to odwrotne od potrzeb, które rozwinęły się w czasie. Sygnały te powstały w momencie, gdy terminal wysyłał partiami ekran pełen danych, ale odbiornik mógł nie być gotowy, a zatem potrzeba kontroli przepływu. Później problem zostałby odwrócony, ponieważ terminal nie mógł nadążyć za danymi pochodzącymi z hosta, ale sygnały RTS / CTS idą w złym kierunku - interfejs nie jest ortogonalny i nie ma odpowiadających sygnałów idących w drugą stronę. Producenci sprzętu dostosowali się najlepiej, jak mogli, w tym wykorzystując sygnały DTR i DSR.
EDYTOWAĆ
Aby dodać więcej szczegółów, jest to dwupoziomowa hierarchia, więc „oficjalnie” oba muszą mieć miejsce, aby komunikacja miała miejsce. Zachowanie jest zdefiniowane w oryginalnym standardzie CCITT (obecnie ITU-T) V.28.
DCE to modem łączący terminal z siecią telefoniczną. W sieci telefonicznej znajdowało się kolejne urządzenie, które odłączyło się do sieci danych, np. X.25.
Modem ma trzy stany: wyłączony, gotowy (stan gotowości zestawu danych to prawda) i podłączony ( wykrywanie nośnika danych )
Terminal nie może nic zrobić, dopóki modem nie zostanie podłączony.
Gdy modem chce wysłać dane, podnosi RTS, a modem udziela żądania z CTS. Modem obniża CTS, gdy jego wewnętrzny bufor jest pełny.
Taka nostalgiczna!
Różnica między nimi polega na tym, że używają różnych pinów. Poważnie, to wszystko. Powodem ich istnienia jest to, że pierwotnie RTS / CTS nigdy nie miał być mechanizmem kontroli przepływu; było to dla modemów półdupleksowych, aby koordynować, kto nadawał i kto odbierał. RTS i CTS były tak często wykorzystywane do kontroli przepływu, że stały się standardem.
Ważną różnicą jest to, że niektóre UART (szczególnie 16550) przestaną odbierać znaki natychmiast, jeśli ich host poinstruuje je, aby ustawić DSR jako nieaktywne. W przeciwieństwie do tego, znaki będą nadal odbierane, jeśli CTS jest nieaktywny. Uważam, że intencją tutaj jest to, że DSR wskazuje, że urządzenie już nie nasłuchuje, a więc wysyłanie dalszych znaków jest bezcelowe, podczas gdy CTS wskazuje, że bufor się zapełnia; ta ostatnia dopuszcza pewien stopień „poślizgu”, w którym linia sterowania przepływem zmieniała stan między próbkowaniem przez DTE a następnym przesyłanym znakiem. W (względnie) późniejszych urządzeniach obsługujących sprzętowe FIFO możliwe jest, że pewna liczba znaków może zostać przesłana po tym, jak DCE ustawił CTS jako nieaktywny.