DTR / DSRとRTS / CTSハードウェアフロー制御の違いは何ですか?それぞれはいつ使用されますか?なぜ複数の種類のハードウェアフロー制御が必要なのですか?:)
回答:
標準に組み込まれたプロトコルがなかったため、物事を行うには複数の方法があります。機器が実装するアドホックな「標準」を使用します。
名前だけに基づいて、RTS / CTSは自然に適合しているように見えます。しかし、それは時間の経過とともに発展したニーズから逆行しています。これらの信号は、端末がデータでいっぱいの画面をバッチ送信するときに作成されましたが、受信機の準備ができていない可能性があるため、フロー制御が必要です。後で、端末がホストからのデータに追いつくことができなかったため、問題は逆転しましたが、RTS / CTS信号は間違った方向に進みます。インターフェイスは直交しておらず、対応する信号は逆方向に進んでいません。機器メーカーは、DTRおよびDSR信号の使用を含め、可能な限り適応しました。
編集
もう少し詳細を追加するには、その2レベルの階層であるため、通信を行うには「公式に」両方が発生する必要があります。この動作は、元のCCITT(現在はITU-T)標準V.28で定義されています。
DCEは、端末と電話網を接続するモデムです。電話網には、データネットワークに分割された別の機器がありました。X.25。
モデムには、電源オフ、準備完了(データセット準備完了がtrue)、接続済み(データキャリア検出)の3つの状態があります。
モデムが接続されるまで、端末は何もできません。
モデムがデータを送信する場合、RTSを発生させ、モデムはCTSで要求を許可します。モデムは、内部バッファがいっぱいになるとCTSを下げます。
懐かしい!
それらの違いは、それらが異なるピンを使用することです。真剣に、それだけです。これらが両方とも存在する理由は、元々、RTS / CTSがフロー制御メカニズムであるとは想定されていなかったためです。誰が送信し、誰が受信したかを調整するのは半二重モデム用でした。RTSとCTSはフロー制御に悪用されることが多く、標準になりました。
重要な違いは、一部のUART(特に16550)は、ホストがDSRを非アクティブに設定するように指示すると、文字の受信をすぐに停止することです。対照的に、CTSが非アクティブの場合でも、文字は受信されます。ここでの意図は、DSRはデバイスがリッスンしていないことを示しているため、それ以上文字を送信しても意味がないのに対し、CTSはバッファがいっぱいになっていることを示していると思います。後者は、フロー制御ラインがそれをサンプリングするDTEと送信される次の文字との間で状態を変更する一定量の「スキッド」を可能にします。ハードウェアFIFOをサポートする(比較的)後のデバイスでは、DCEがCTSを非アクティブに設定した後、多数の文字が送信される可能性があります。