Handshake

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Generelt set er handshake at man kan angive om man er klar til at modtage, og at man ser efter om den man skal kommunikere med er klar til at modtage det man vil sende.

Handshake kan anvendes i mange forskellige kommunikationsprotokoller.

Printerport

Printerporten på en PC er en parallel port, hvor der sendes 8 bit ad gangen til printeren. Dette er en gammel standard, hvor man sjældent ser parallel porte på andet end stationære PC'er - i dag anvender man USB porte til printere eller netværks-tilslutning.

På parallelporten er der forskellige ben der kan melde tilbage fra printeren, når den ikke er klar til at modtage (Error, Paper out, Select og Busy[1]). Når alle disse melder OK, så kan man sende en byte til printeren hvor man bruger handshake til at sikre at den kommer igennem:

Selve handshaken foregår som følger:

  1. Byten lægges ud på porten af PC'en
  2. PC'en trækker Strobe lav, for at indikere at der er en byte
  3. Når pinteren har læst byten fra porten, så sættes ACK høj
  4. PC'en indikere at den har set at printeren har læst byten, ved at lægge Strobe høj igen
  5. Printeren melder klar ved at lægge ACK lav igen, så der er klar til næste byte

Seriel port

På en seriel port kan man sende og modtage mellem to enheder ved hjælpe af 2 signaler.

Hvis det skal fungere fornuftigt, så skal begge enheder altid være klar til at modtage, så man ikke mister information.

I mange konstruktioner kan der være ting der gør at man ikke hele tiden er klar til at modtage på en seriel port, og i disse sammenhænge er det vigtigt at man kan indikere dette. Det kan man gøre ved hjælp af handshake, så man kan indikere at man er klar, eller endnu vigtigere at man ikke er klar til at modtage.

Handshake på en seriel port kan etableres ved hjælp af forskellige teknikker.

XON / XOFF handshake

Hvis man kun har de to serielle signaler igennem, så kan man lave handshake ved at bruge XON / XOFF handshake, også kaldet Software flow control [2].

Det fungerer ved at modtageren kan melde "ikke klar" ved at sende en XOFF-karakter (ASCII-karakter 19) tilbage til afsenderen, hvor afsenderen så skal stoppe med at sende (det kræver at denne XOFF sendes så tidligt, at modtageren stadig kan acceptere at få et par karakterer mere inden afsenderen får modtaget XOFF og bremset afsendelsen). Når modtageren så er klar til at modtage noget mere, så skal modtageren sende en XON-karakter (ASCII-karakter 17).

Som det kan ses, så er XON/XOFF handshake noget der normalt skal etableres i softwaren, og der kræver at softwaren stadig kan nå at reagere på at der kommer en XOFF.

Metoden kan også have den ulempe at man er nødt til at have de to karakterer reserveret, så det ikke er frit hvad man sender (det kan være et problem hvis man ønsker at kunne sende rå data over den serielle forbindelse).

RTS / CTS handshake

En anden måde at lave handshake på er at have ekstra ledninger med signaler der kan angive om man er klar til at modtage. En af metoderne er RTS / CTS handshake [3].

Princippet er at en modtager kan sætte sin RTS aktiv, når den er klar til at modtage data, og hvis den på et tidspunkt ikke kan håndtere mere data ind, så kan den sættes passiv - og sættes aktiv igen, når man på et senere tidspunkt bliver klar til at modtage igen.

Ved at forbinde afsenderens CTS til modtagerens RTS, så kan afsenderen se for hver karakter om modtageren er klar til at modtage den karakter der skal afsendes, ellers skal afsenderen vente med at sende, indtil modtageren igen melder klar til at modtage, ved at sætte sin RTS aktiv igen. Forbinder man RTS/CTS "over kryds", så kan der sikres handshake begge veje, så begge ender kan melde "ikke klar til at modtage".

Anden hardware handshake

Man kunne i pricippet se på DTR / DCD på samme måde som RTS / CTS, men de har normalt en anden betydning, hvor DTR kan "vække" et modem, og tilsvarende få det til at "lægge på", hvilket er mere overordnede funktioner, og ligeledes er DCD en meddelelse tilbage om at der er forbindelse igennem til den anden ende af telefonlinjen (der er ringet op og etableret kontakt).

Referencer