La maggior parte di noi non dà mai molta importanza alle nostre tastiere fintanto che funzionano bene, ma se ti fermi a pensarci per un momento, inviano solo segnali ai nostri computer o c'è un processo attivo avanti e indietro al lavoro ? Il post di domande e risposte di SuperUser di oggi contiene la risposta alla domanda di un lettore curioso.
La sessione di domande e risposte di oggi ci arriva per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento guidato dalla comunità di siti web di domande e risposte.
La domanda
Il lettore SuperUser Ne Mo vuole sapere se le tastiere USB inviano solo segnali o se li ricevono anche loro:
Una tastiera USB non ha bisogno di ricevere alcun segnale da un computer, solo alimentazione, giusto? O ha bisogno di ricevere segnali oltre che inviarli?
Le tastiere USB inviano solo segnali o li ricevono anche loro?
La risposta
I collaboratori di SuperUser LawrenceC e Dmitry Grigoryev hanno la risposta per noi. Il primo, LawrenceC:
Dal " Device Class Definition for Human Interface Devices (HID) "Specifica:
![]()
Per cambiare i LED della tastiera, la tastiera accetta un comando per farlo. Quindi non è un dispositivo "solo input" (il che significa che invia solo dati all'host). Detto questo, c'è un processo di negoziazione ed enumerazione con tutti i dispositivi USB che richiedono una conversazione avanti e indietro tra l'host e il dispositivo. Non è possibile disporre di un dispositivo USB di "sola lettura". Anche prima dell'USB, il controller della tastiera del computer accettava i comandi perché faceva alcune cose oltre a leggere la tastiera ( riferimento ):
![]()
Seguito dalla risposta di Dmitry Grigoryev:
Qualsiasi dispositivo USB, indipendentemente dalla sua classe, richiede la comunicazione bidirezionale per funzionare. Ogni dispositivo USB (o funzione in termini di specifiche USB) è rappresentato come un insieme di endpoint che possono essere pensati come buffer che accettano o ricevono dati. Tuttavia, anche gli endpoint che possono inviare solo dati aspettano un pacchetto speciale chiamato token prima di poter rispondere:
![]()
Le caselle grigie rappresentano l'host USB mentre le caselle bianche rappresentano le funzioni USB ( sorgente del grafico ).
Anche i cosiddetti trasferimenti di interrupt vengono eseguiti in questo modo, con l'host USB che esegue il polling dei dispositivi collegati utilizzando pacchetti di token. Ciò che differisce tra trasferimenti regolari (in blocco) e trasferimenti con interruzione è che il tempo di polling è ridotto e garantito in quest'ultimo caso. Tuttavia, tutti i trasferimenti vengono avviati dall'host.
Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere altre risposte da altri utenti esperti di tecnologia Stack Exchange? Dai un'occhiata al thread di discussione completo qui .
Credito immagine: Luke Jones (Flickr)