Яка різниця між DTR / DSR та RTS / CTS апаратним контролем потоку? Коли використовується кожен з них? Навіщо нам потрібно більше одного виду апаратного контролю потоку? :)
Відповіді:
Існує безліч способів робити щось, оскільки ніколи не було протоколів, вбудованих у стандарти. Ви використовуєте будь-який спеціальний "стандарт" вашого обладнання.
Просто виходячи з назв, RTS / CTS, здається, є цілком природною. Однак це відстає від потреб, що склалися з часом. Ці сигнали були створені в той час, коли термінал пакетно надсилав екран, повний даних, але приймач може бути не готовим, отже, необхідність управління потоком. Пізніше проблема буде змінена, оскільки термінал не міг встигати за даними, що надходять від хоста, але сигнали RTS / CTS рухаються в неправильному напрямку - інтерфейс не є ортогональним, і відповідні сигнали не йдуть в іншу сторону. Виробники обладнання адаптувались як могли, в тому числі використовуючи сигнали DTR та DSR.
РЕДАГУВАТИ
Щоб додати трохи більше деталей, це дворівнева ієрархія, тому "офіційно" обоє мають відбуватися для спілкування. Поведінка визначена у вихідному стандарті CCITT (нині ITU-T) V.28.
DCE - це модем, що з'єднує термінал і телефонну мережу. У телефонній мережі було ще одне обладнання, яке відокремилося від мережі передачі даних, наприклад. Х.25.
Модем має три стани: вимкнений, готовий ( Набір даних Готовий істинний) та підключений ( Виявлення носія даних )
Термінал не може нічого зробити, поки модем не підключений.
Коли модем хоче надіслати дані, він піднімає RTS, і модем задовольняє запит через CTS. Модем знижує CTS, коли його внутрішній буфер заповнений.
Так ностальгічно!
Різниця між ними полягає в тому, що вони використовують різні шпильки. Серйозно, все. Причина того, що вони обидва існують, полягає в тому, що спочатку RTS / CTS ніколи не повинен був бути механізмом управління потоком; напівдуплексні модеми мали координувати, хто надсилає, а хто приймає. RTS та CTS зловживають для управління потоком так часто, що це стає стандартним.
Важливою відмінністю є те, що деякі UART (зокрема, 16550) припиняють отримувати символи негайно, якщо їх хост вказує їм встановити DSR як неактивний. На відміну від них, символи все одно будуть отримуватися, якщо CTS неактивний. Я вважаю, що намір тут полягає в тому, що DSR вказує на те, що пристрій більше не слухає, і тому надсилання будь-яких подальших символів безглуздо, тоді як CTS вказує на те, що буфер заповнюється; останній забезпечує певну кількість "заносу", коли лінія управління потоком змінювала стан між DTE, що відбирає його, і наступним переданим символом. У (відносно) пізніших пристроях, що підтримують апаратний FIFO, можливо, що певна кількість символів може бути передана після того, як DCE встановив CTS як неактивний.