Ich habe mit der Erzeugung von Klängen mit mathematischen Wellenfunktionen in C gespielt. Der nächste Schritt in meinem Projekt besteht darin, Benutzereingaben von einem MIDI-Keyboard-Controller zu erhalten, um die Wellen auf verschiedene zu modulieren Stellplätze.C Linux Geräteprogrammierung - Lesen direkt von/Dev
Meine erste Idee war, dass dies relativ einfach wäre und Linux als Linux mir erlauben würde, den Rohdatenstrom von meinem Gerät zu lesen, so wie ich es bei jeder anderen Datei tun würde.
Forschung rät jedoch überwältigend, dass ich einen Gerätetreiber für den MIDI-Controller schreibe. Die allgemeine Idee ist, dass der Kernel selbst dann, wenn die Gerätedatei vorhanden ist, nicht weiß, welche Systemaufrufe ausgeführt werden sollen, wenn meine Anwendung Funktionen wie read() und write() aufruft.
Trotz dieser Warnungen habe ich ein Experiment gemacht. Ich habe den MIDI-Controller angeschlossen und die Device-Datei "/ dev/midi1" kattiert. Ein steter Strom von Null-Zeichen erschien, und als ich eine Taste auf dem MIDI-Controller drückte, erschienen mehrere Bytes, die den erwarteten Message-Chunks entsprachen, die ein MIDI-Gerät ausgeben sollte. MIDI Protocol Info
Also meine Fragen sind:
Warum hat der cat'ed Strom auf diese Weise verhalten?
Bedeutet dies, dass bereits ein Plug-and-Play-Gerätetreiber auf meinem System installiert ist?
Sollte ich immer noch einen Gerätetreiber schreiben, oder kann ich es wie eine Datei lesen?
Vielen Dank im Voraus für das Teilen Ihrer Weisheit in diesen Bereichen.
anstatt zu cat'ting, würde ich empfehlen, dass Sie() das Gerät von einem 'C' Programm lesen. Sie sagen, Sie sehen "gültige" Daten, warum nicht sicher herausfinden? Übrigens muss dort bereits ein Gerätetreiber vorhanden sein, sonst hätten Sie keine Gerätedatei und auch keinen Zugriff darauf. – KevinDTimm