Ho difficoltà a capire quando sono necessari i driver di periferica e quando è sufficiente parlare direttamente a un controller di porta tramite seriale / parallela / USB / ecc. fornita dal sistema operativo. driver.
Ad esempio, Esempio 1 : prendiamo OpenBCI , un hardware BCI open source che consente di leggere l'EEG + Letture ECG ("brainwave"). L'auricolare OpenBCI invia segnali RF a un'unità USB inserita nella macchina, quindi è possibile scrivere il proprio software per leggere i dati in entrata in quella porta; quindi, permettendoti di leggere le tue onde cerebrali e di interpretare i dati del brainwave sul livello dell'app. Molto carino. Per leggere i tuoi dati di streaming "brainwave", devi non solo leggere dalla tua porta seriale (usando il driver seriale fornito dal sistema operativo), ma devi interpretare i dati in accordo con Specifiche OpenBCI . Quindi la pila assomiglia a questo:
Madanessunapartequiabbiamoun"driver di periferica" specifico per l'auricolare OpenBCI. Solo il driver seriale necessario per leggere i byte di dati, e quindi è necessario interpretare che cosa significano quei byte all'interno della tua app. Ad esempio, se volessi un'applicazione Java per interpretare i dati del brainwave, potrei usare JSerialComm per leggere i dati dalla mia COM locale porta (o qualunque altra USB sia presente sul sistema locale). Dovrebbe quindi essere la mia app a interpet quei dati per le specifiche sopra elencate.
Ora, Esempio 2 : una webcam USB Logitech come questa . Qui, è necessario installare i driver di dispositivo della webcam sulla macchina in modo da poterlo utilizzare. Mi chiedo perché. Facciamo finta (basta premere il pulsante " I believe! " per un momento) che il pinout per questa webcam è stato semplicemente stupido:
PIN # Meaning
===================
1 Power
2 Ground
3 Send data (if 1 then the camera will start "streaming" its video data over data pins)
4 Data pin 1
5 Data pin 2
Questo è un dispositivo USB, proprio come l'OpenBCI. Quindi, perché non potrei scrivere un'app (in qualsiasi lingua) che legge e scrive direttamente sulla porta USB / seriale (ancora, forse usando JSerialComm o simili)? Quando voglio che l'app inizi a catturare i dati video della webcam, invio byte alla porta seriale ( di nuovo via JSerialComm, ecc.) Che attiva / disattiva il Pin # 3 e che successivamente inizia a leggere il video dati dai pin 4 e 5.
Immagino di non capire perché OpenBCI non abbia o abbia bisogno di un driver di dispositivo, mentre la webcam (o qualsiasi altro dispositivo USB standard come una stampante, un mouse, una tastiera, ecc.) lo fa. Grazie in anticipo!