Skicka USB-tangentbord bara signaler eller tar de emot dem också?
De flesta av oss ger aldrig mycket tanke 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 återgående process på jobbet ? Dagens SuperUser Q & A inlägg har svaret på en nyfiken läsarens fråga.
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsare Ne Mo vill veta om USB-tangentbord bara sänder signaler eller om de tar emot dem också:
Ett USB-tangentbord behöver inte ta emot signaler från en dator, bara ström, eller hur? Eller behöver den ta emot signaler samt skicka dem?
Har USB-tangentbord bara skicka signaler eller tar de emot dem också?
Svaret
SuperUser-bidragsgivare LawrenceC och Dmitry Grigoryev har svaret för oss. Först upp, LawrenceC:
Från "Device Class Definition for Human Interface Devices (HID)" specifikation:
För att ändra tangentbordslamporna accepterar tangentbordet ett kommando för att göra det. Så det är inte en "input-only" -enhet (det betyder att det bara matar ut data till värden). Det sägs att det finns en förhandlings- och uppräkningsprocess med alla USB-enheter som kräver en fram och tillbaka samtal mellan värden och enheten. Du kan inte ha en "skrivskyddad" USB-enhet. Även före USB skulle datorns tangentbordskontroller acceptera kommandon eftersom det gjorde några saker förutom att läsa tangentbordet (referens):
Följd av svaret från Dmitry Grigoryev:
Alla USB-enheter, oavsett vilken klass som helst, kräver dubbelriktad kommunikation för att fungera. Varje USB-enhet (eller funktion i form av USB-specifikationer) representeras som en uppsättning slutpunkter som kan betraktas som buffertar som accepterar eller tar emot data. Men även slutpunkter som bara kan skicka data väntar på ett specialpaket som heter ett token innan de kan svara:
De grå rutorna representerar USB-värden medan de vita rutorna representerar USB-funktioner (diagramkälla).
Även så kallade avbrytsöverföringar görs på det här sättet, med USB-värdvalande anslutna enheter som använder token-paket. Vad som skiljer sig från regelbundna (bulk) överföringar och avbryta överföringar är att pollingstiden ä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 mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.
Bildkrediter: Luke Jones (Flickr)