
De meesten van ons denken nooit veel na over onze toetsenborden zolang ze goed werken, maar als je er even bij stilstaat, sturen ze dan alleen signalen naar onze computers of is er een actief heen-en-weer proces aan het werk ? De SuperUser Q & A-post van vandaag biedt het antwoord op de vraag van een nieuwsgierige lezer.
De vraag- en antwoordsessie van vandaag komt tot ons dankzij SuperUser – een onderdeel van Stack Exchange, een door de gemeenschap aangestuurde groepering van Q & A-websites.
De vraag
SuperUser-lezer Ne Mo wil weten of USB-toetsenborden alleen signalen verzenden of ook ontvangen:
Een USB-toetsenbord hoeft geen signalen van een computer te ontvangen, alleen stroom, toch? Of moet het zowel signalen ontvangen als verzenden?
Verzenden USB-toetsenborden alleen signalen of ontvangen ze deze ook?
Het antwoord
SuperUser-bijdragers LawrenceC en Dmitry Grigoryev hebben het antwoord voor ons. Ten eerste, LawrenceC:
Van de specificatie ‘Device Class Definition for Human Interface Devices (HID)’:
Om de toetsenbord-LED’s te wijzigen, accepteert het toetsenbord een opdracht om dit te doen. Het is dus geen apparaat met alleen invoer (wat betekent dat het alleen gegevens naar de host verzendt). Dat gezegd hebbende, is er een onderhandelings- en opsommingsproces met alle USB-apparaten waarvoor een heen en weer gesprek tussen de host en het apparaat nodig is. U kunt geen “alleen-lezen” USB-apparaat hebben. Zelfs vóór USB accepteerde de toetsenbordcontroller van de computer opdrachten omdat deze naast het lezen van het toetsenbord nog een paar dingen deed (referentie):
Gevolgd door het antwoord van Dmitry Grigoryev:
Elk USB-apparaat, ongeacht zijn klasse, heeft bidirectionele communicatie nodig om te functioneren. Elk USB-apparaat (of functie in termen van USB-specificaties) wordt weergegeven als een reeks eindpunten die kunnen worden gezien als buffers die gegevens accepteren of ontvangen. Maar zelfs eindpunten die alleen gegevens kunnen verzenden, wachten op een speciaal pakket, een token genaamd, voordat ze kunnen antwoorden:
De grijze vakken vertegenwoordigen de USB-host, terwijl de witte vakken de USB-functies vertegenwoordigen (kaartbron).
Zelfs zogenaamde interruptoverdrachten worden op deze manier uitgevoerd, waarbij de USB-host aangesloten apparaten pollt met behulp van token-pakketten. Wat verschilt tussen reguliere (bulk) transfers en interrupt transfers, is dat de pollingtijd in het laatste geval kort is en gegarandeerd. Toch worden alle overdrachten geïnitieerd door de host.
Iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden lezen van andere technisch onderlegde Stack Exchange-gebruikers? Bekijk hier de volledige discussiethread.
Afbeelding tegoed: Luke Jones (Flickr)


