2009-06-05 4 views
57

Qual è la differenza tra controllo di flusso hardware DTR/DSR e RTS/CTS? Quando viene utilizzato ciascuno? Perché abbiamo bisogno di più di un tipo di controllo del flusso hardware? :)Qual è la differenza tra DTR/DSR e controllo di flusso RTS/CTS?

+9

Non sono sicuro che questo sia davvero il posto giusto per questa domanda, ma +1 per l'enorme ondata di nostalgia che ho appena sentito. Anche se non sono sicuro se darlo -1 per ricordare a) Quanti anni ho b) che ho usato conosco la risposta a questo ma ho dimenticato. – AnthonyWJones

+0

Questo probabilmente appartiene a superuser.com ... ma non esiste ancora. – derobert

risposta

44
  • DTR - Data Terminal Ready
  • DSR - Data Set Ready
  • RTS - Richiesta di invio
  • CTS - Clear To Send

Ci sono diversi modi di fare le cose perché non ci sono mai stati protocolli integrati negli standard. Usi qualsiasi "standard" ad-hoc applicato dalla tua attrezzatura.

Proprio in base ai nomi, RTS/CTS sembra essere una scelta naturale. Tuttavia, è indietro rispetto ai bisogni che si sono sviluppati nel tempo. Questi segnali sono stati creati in un momento in cui un terminale inviava in batch uno schermo pieno di dati, ma il ricevitore potrebbe non essere pronto, quindi la necessità di controllo del flusso. In seguito il problema sarebbe invertito, poiché il terminale non poteva tenere il passo con i dati provenienti dall'host, ma i segnali RTS/CTS vanno nella direzione sbagliata - l'interfaccia non è ortogonale e non ci sono segnali corrispondenti che vanno dall'altra parte. I produttori di attrezzature si sono adattati come meglio potevano, compreso l'utilizzo dei segnali DTR e DSR.

+1

Ben riassunto. Poi è arrivato il controllo del flusso "soft" xOn/xOff. – n8wrl

+0

Nota: DTR/DSR è diventato meno comune di RTS/CTS dopo la metà degli anni '80. Linux Kernal non ha mai supportato DTR/DSR: quando il linux kernal supportava DTR/DSR, il serial 232 era diventato obsoleto. – david

+5

@david Questi segnali non sono limitati a RS232, ma sono usati anche nelle UART TTL. E questi sono lontani dall'essere obsoleti. – glglgl

24

La differenza tra loro è che usano pin diversi. Seriamente, è così. La ragione per cui entrambi esistono è che RTS/CTS non avrebbe mai dovuto essere un meccanismo di controllo del flusso, in origine; era per i modem half-duplex per coordinare chi stava inviando e chi stava ricevendo. RTS e CTS sono stati abusati per il controllo del flusso così spesso da diventare standard.

+1

Mi sono completamente dimenticato di metà fronte-retro. Ricordo vagamente di averlo visto in azione, su una stampante combinata/lettore di schede. Grazie per questa risposta. –

+0

Ora superuser.com esiste e ci dice che al momento della richiesta, il linux kernal non supportava la segnalazione DTR/DSR. http://superuser.com/questions/345005/how-to-do-hardware-dtr-dsr-flow-control-on-linux-serial-port-programming. Il che indica un'altra differenza: la segnalazione DTR/DSR è meno comune/non è stata utilizzata dagli smart-modem. – david