Es fällt mir schwer zu verstehen, wann Gerätetreiber benötigt werden und wann es in Ordnung ist, direkt mit einem Port-Controller über das vom Betriebssystem bereitgestellte serielle / parallele / USB / etc. Zu sprechen. Treiber.
Zum Beispiel Beispiel 1 : nehmen wir OpenBCI , eine Open - Source - Hardware BCI , die Sie EEG + EKG ( "Gehirnwellen") Lesungen lesen können. Das OpenBCI-Headset sendet HF-Signale an ein an Ihr Gerät angeschlossenes USB-Laufwerk. Anschließend können Sie Ihre eigene Software schreiben, um die an diesen Anschluss eingehenden Daten zu lesen. Auf diese Weise können Sie Ihre eigenen Gehirnwellen lesen und Gehirnwellendaten auf der App-Ebene interpretieren. Ziemlich cool. Um Ihre „Streaming“ brainwave Daten zu lesen, müssen Sie nicht nur von Ihrem seriell Port lesen (die seriellen Treiber vom Betriebssystem zur Verfügung gestellt), aber Sie müssen interpretieren die Daten in entsprechend mit den OpenBCI Spezifikationen . Der Stapel sieht also so aus:
Aber nirgendwo hier haben wir einen "Gerätetreiber", der speziell für das OpenBCI-Headset ist. Nur der serielle Treiber, der zum Lesen von Datenbytes erforderlich ist, und dann müssen Sie interpretieren, was diese Bytes in Ihrer App bedeuten. Wenn ich beispielsweise möchte, dass eine Java-App Gehirnwellendaten interpretiert, kann ich JSerialComm verwenden , um die Daten von meinem lokalen COM-Port (oder von USB auf dem lokalen System) zu lesen. Es wäre dann zu meiner App bis Interpet , dass Daten gemäß den Spezifikationen des oben aufgeführt ist .
Nun Beispiel 2 : Eine Logitech USB-Webcam wie diese . Hier müssen Sie die Gerätetreiber der Webcam auf Ihrem Computer installieren, damit Sie sie verwenden können. Ich frage mich warum. Stellen wir uns vor (drücken Sie einfach einen Moment auf die Schaltfläche " Ich glaube! "), Dass die Pinbelegung für diese Webcam einfach dumm war:
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
Dies ist ein USB-Gerät, genau wie das OpenBCI. Warum konnte ich keine App (in einer beliebigen Sprache) schreiben, die auch nur direkt auf den USB- / seriellen Anschluss liest / schreibt (wieder möglicherweise mit JSerialComm oder ähnlichem)? Wenn die App mit der Erfassung von Webcam-Videodaten beginnen soll, sende ich Bytes an die serielle Schnittstelle ( erneut über JSerialComm usw.), die Pin 3 hoch / einschalten und anschließend die Videodaten von Pins 4 und 5 lesen.
Ich glaube, ich verstehe nicht, warum OpenBCI keinen Gerätetreiber hat oder benötigt, wohingegen die Webcam (oder ein anderes Standard-USB-Gerät wie ein Drucker, eine Maus, eine Tastatur usw.) dies tut. Danke im Voraus!