De flesta av oss tänker aldrig mycket på våra tangentbord så länge de fungerar bra, men om du slutar tänka på det en stund, skickar de bara signaler till våra datorer eller finns det en aktiv fram och tillbaka-process på jobbet ? Dagens SuperUser Q & A-inlägg har svaret på en nyfiken läsares fråga.
Dagens Fråga & Svar-session kommer till oss med tillstånd av SuperUser - en underavdelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsaren Ne Mo vill veta om USB-tangentbord bara skickar signaler eller om de också tar emot dem:
Ett USB-tangentbord behöver inte ta emot några signaler från en dator, bara ström, eller hur? Eller behöver den ta emot signaler och skicka dem?
Sänder USB-tangentbord bara signaler eller tar de emot dem också?
Svaret
SuperUser-bidragsgivarna LawrenceC och Dmitry Grigoryev har svaret för oss. Först och främst, LawrenceC:
Från " Device Class Definition for Human Interface Devices (HID) " Specifikation:
![]()
För att ändra tangentbordets lysdioder accepterar tangentbordet ett kommando för att göra det. Så det är inte en "endast inmatad" enhet (vilket innebär att den bara matar ut data till värden). Med detta sagt finns det en förhandlings- och uppräkningsprocess med alla USB-enheter som kräver ett fram och tillbaka-samtal mellan värden och enheten. Du kan inte ha en "skrivskyddad" USB-enhet. Redan före USB skulle datorns tangentbordskontroller acceptera kommandon eftersom det gjorde några saker förutom att läsa tangentbordet ( referens ):
![]()
Följt av svaret från Dmitry Grigoryev:
Alla USB-enheter oavsett klass kräver dubbelriktad kommunikation för att fungera. Varje USB-enhet (eller funktion i termer av USB-specifikationer) representeras som en uppsättning slutpunkter som kan ses som buffertar som accepterar eller tar emot data. Men även slutpunkter som bara kan skicka data väntar på ett specialpaket som kallas en token innan de kan svara:
![]()
De grå rutorna representerar USB-värden medan de vita rutorna representerar USB-funktioner ( diagramkälla ).
Även så kallade avbrottsöverföringar görs på detta sätt, med USB-värd som pollar anslutna enheter med tokenpaket. Vad som skiljer sig mellan regelbundna (bulk) överföringar och avbrott är att avstämningstiden är liten och garanterad i det senare fallet. Ändå initieras alla överföringar av värden.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniskt kunniga Stack Exchange-användare? Kolla in hela diskussionstråden här .
Bildkredit: Luke Jones (Flickr)