Me resulta difícil entender cuándo se necesitan controladores de dispositivo y cuándo está bien hablar directamente con un controlador de puerto a través del puerto serie / paralelo / USB / etc. provisto por el sistema operativo. conductor.
Por ejemplo, Ejemplo 1 : tomemos OpenBCI , un hardware de código abierto BCI que le permite leer lecturas de EEG + EKG ("brainwave"). El auricular OpenBCI envía señales de RF a una unidad USB conectada a su máquina, y luego puede escribir su propio software para leer los datos que ingresan a ese puerto; por lo tanto, le permite leer sus propias ondas cerebrales e interpretar los datos de las ondas cerebrales en la capa de la aplicación. Muy genial. Para leer sus datos de ondas cerebrales de "transmisión", no solo debe leer desde su puerto serie (utilizando el controlador serie proporcionado por el sistema operativo), sino que debe interpretar los datos de acuerdo con las especificaciones de OpenBCI . Entonces la pila se ve así:
Pero en ninguna parte aquí tenemos un "controlador de dispositivo" específico para los auriculares OpenBCI. Solo el controlador serial necesario para leer bytes de datos, y luego debe interpretar qué significan esos bytes desde dentro de su aplicación. Entonces, por ejemplo, si quisiera una aplicación Java para interpretar datos de ondas cerebrales, podría usar JSerialComm para leer los datos de mi puerto COM local (o cualquier USB que esté en el sistema local). Entonces dependería de mi aplicación interpretar esos datos según las especificaciones enumeradas anteriormente.
Ahora, Ejemplo 2 : una cámara web USB Logitech como esta . Aquí, debe instalar los controladores de dispositivo de la cámara web en su máquina para poder usarla. Me pregunto por qué. Supongamos (solo presione el botón " ¡Creo! " Por un momento) que el pinout para esta cámara web fue estúpidamente simple:
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
Este es un dispositivo USB, al igual que OpenBCI. Entonces, ¿por qué no podría escribir una aplicación (en cualquier idioma) que también solo lea / escriba directamente en el puerto USB / serie (nuevamente, tal vez usando JSerialComm o similar)? Cuando quiero que la aplicación comience a capturar datos de video de la cámara web, envío bytes al puerto serie ( nuevamente a través de JSerialComm, etc.) que activan / activan el Pin # 3, y que luego comienzan a leer los datos de video de los Pines 4 y 5.
Supongo que no entiendo por qué OpenBCI no tiene o no necesita un controlador de dispositivo, mientras que la cámara web (o cualquier otro dispositivo USB estándar como una impresora, mouse, teclado, etc.) sí. ¡Gracias por adelantado!