2009-06-05 14 views
57

Jaka jest różnica między sprzętową kontrolą przepływu DTR/DSR i RTS/CTS? Kiedy każdy jest używany? Dlaczego potrzebujemy więcej niż jednego rodzaju kontroli przepływu sprzętu? :)Jaka jest różnica między kontrolowaniem przepływu DTR/DSR i RTS/CTS?

+9

Nie jestem pewien, czy to naprawdę właściwe miejsce dla tego pytania, ale +1 dla ogromnej fali nostalgii, którą właśnie odczuwałem. Chociaż nie jestem pewien, czy dać to -1 za przypomnienie a) Ile lat jestem i b), którego użyłem zna odpowiedź na to, ale zapomniałem. – AnthonyWJones

+0

To prawdopodobnie należy do superuser.com ... ale jeszcze nie istnieje. – derobert

Odpowiedz

44
  • DTR - Data Terminal Ready
  • DSR - Data Set Ready
  • RTS - Request To Send
  • CTS - Clear To Send

Istnieje wiele sposobów robienia rzeczy ponieważ nigdy nie było żadnych protokołów wbudowanych w standardy. Używasz cokolwiek ad-hoc "standardowego" wyposażenia swojego sprzętu.

Tylko na podstawie nazw, RTS/CTS wydaje się być naturalnym dopasowaniem. Jest to jednak powrót do potrzeb, które rozwinęły się w czasie. Sygnały te powstały w czasie, gdy terminal wysyłał wsadowo pełen ekran danych, ale odbiornik może nie być gotowy, a więc potrzeba kontroli przepływu. Później problem zostałby odwrócony, ponieważ terminal nie nadąża za danymi pochodzącymi od hosta, ale sygnały RTS/CTS idą w złym kierunku - interfejs nie jest ortogonalny i nie ma odpowiednich sygnałów idących w drugą stronę. Producenci sprzętu dostosowali się najlepiej, jak potrafili, w tym stosując sygnały DTR i DSR.

+1

Ładnie podsumowano. Następnie powstało "miękkie" sterowanie przepływem xOn/xOff. – n8wrl

+0

Uwaga: DTR/DSR stały się mniej powszechne niż RTS/CTS po połowie lat 80-tych. Linux kernal nigdy nie obsługiwał DTR/DSR: do czasu, gdy kernal linuxa obsługiwał DTR/DSR, serial 232 stał się przestarzały. – david

+5

@david Sygnały te nie są ograniczone do portu RS232, ale są również używane w sieciach UART TTL. A te są dalekie od bycia przestarzałymi. – glglgl

24

Różnica między nimi polega na tym, że używają różnych szpilek. Poważnie, to wszystko. Powodem, dla którego obaj istnieją, jest to, że RTS/CTS nigdy nie miał być mechanizmem kontroli przepływu; to było dla modemów półdupleksowych, aby koordynować wysyłanie i kto odbierał. RTS i CTS były nadużywane do kontroli przepływu tak często, że stały się standardem.

+1

Całkowicie zapomniałem o pół dupleksie. Niejasno pamiętam, że widziałem to w akcji, na czytniku kart sieciowych/czytniku kart. Dziękuję za tę odpowiedź. –

+0

Teraz superuser.com istnieje i mówi nam, że w chwili zapytania, Linux Kernal nie obsługiwał sygnalizacji DTR/DSR. http://superuser.com/questions/345005/how-to-do-hardware-dtr-dsr-flow-control-on-linux-serial-port- programowanie. Co wskazuje na kolejną różnicę: sygnalizacja DTR/DSR jest mniej powszechna/nie była używana przez smart-modemy. – david

Powiązane problemy