В чем разница между управлением потоками DTR / DSR и RTS / CTS? - PullRequest
70 голосов
/ 05 июня 2009

В чем разница между аппаратным управлением потоком DTR / DSR и RTS / CTS? Когда каждый из них используется? Зачем нам нужно более одного вида аппаратного управления потоком? :)

Ответы [ 3 ]

57 голосов
/ 05 июня 2009
  • DTR - терминал данных готов
  • DSR - Набор данных готов
  • РТС - Запрос на отправку
  • CTS - Очистить для отправки

Есть несколько способов сделать что-то, потому что в стандарты никогда не было встроенных протоколов. Вы используете любой специальный "стандарт" вашего оборудования.

Просто исходя из названий, RTS / CTS может показаться естественным. Тем не менее, это в обратном направлении от потребностей, которые развивались с течением времени. Эти сигналы были созданы в то время, когда терминал отправлял пакетную передачу экрана, заполненного данными, но приемник мог быть не готов, поэтому возникла необходимость в управлении потоком. Позже проблема будет обращена вспять, поскольку терминал не успевает за данными, поступающими с хоста, но сигналы RTS / CTS идут в неправильном направлении - интерфейс не ортогональн, и нет соответствующих сигналов, идущих в другую сторону. Производители оборудования адаптировались как могли, включая использование сигналов DTR и DSR.

28 голосов
/ 05 июня 2009

Разница между ними в том, что они используют разные контакты. Серьезно, вот и все. Причина, по которой они оба существуют, заключается в том, что RTS / CTS изначально не должен был быть механизмом управления потоком; это было для полудуплексных модемов, чтобы координировать, кто посылал, а кто получал. RTS и CTS так часто использовались для управления потоком, что стали стандартом.

0 голосов
/ 01 апреля 2019

Важным отличием является то, что некоторые UART (в частности, 16550) немедленно прекращают прием символов, если их хост указывает им установить DSR в неактивное состояние. Напротив, символы все равно будут получены, если CTS неактивен. Я полагаю, что здесь подразумевается, что DSR указывает, что устройство больше не прослушивает, и поэтому отправка любых дальнейших символов не имеет смысла, в то время как CTS указывает, что буфер переполняется; последний допускает определенное количество «заноса», когда линия управления потоком изменила состояние между DTE, выполняющим выборку, и следующим передаваемым символом. В (относительно) более поздних устройствах, которые поддерживают аппаратный FIFO, возможно, что после того, как DCE установит CTS в неактивное состояние, может быть передано несколько символов.

...