Forum: PC-Programmierung HID - Geräteklassen


von Flo K. (Gast)


Lesenswert?

Hallo,

ich habe eine kleine Frage bezüglich der HID-Klassen beim USB. In einem 
Projekt habe ich einen "MIDI-Sender". Jetzt habe ich gelesen das es auch 
ein spezielles USB-MIDI Protokoll gibt, sowie die dazugehörige HID. Habe 
mir auch schon das Dokument auf USB.org soweit durchgelesen, nur 
erschließt sich mir der Zusammenhang z.b mit Windows noch nicht ganz. 
Was passiert wenn ich einen mit den passenden Descriptoren 
programmierten USB-Mikrocontroller an den USB hänge? Erkennt mir Windows 
eine Midi Schnittstelle, die ich in versch. Programmen verwenden kann 
oder muss ich noch einen Treiber aufsetzen?

von ich&er (Gast)


Lesenswert?

wenn du gemäß der spezifikation entwickelst sollte es keine probleme 
geben, da die verschiedenen klassen im windows-treiber ja bereits 
implementiert sind. windows sollte demnach dein gerät als usb-midi 
erkennen - die klasse selbst ist ja sowieso nur ein wert im descriptor 
definiert wie du richtig festgestellt hast, was du dann nachher mit 
deinem gerät anstellst ist ja dann nicht mehr sache des usb-treibers 
ansich...
vll erklärst du kurz was du mit "midi-sender" meinst...ein stück 
hardware, dass midi-daten "ausgibt", die du dann via usb richtung 
windows-pc (host) verschicken willst?

von Flo K. (Gast)


Lesenswert?

Ja genau,

ich bin grad an der Planungsphase für ein Gerät zur Steuerung einer 
MP3-DJ Software. Dieses Gerät gibt seine Steuerinformationen via MIDI an 
die Software weiter. Die Software wiederrum kann auch Befehle an das 
Steuergerät senden (LED's schalten).

von ich&er (Gast)


Lesenswert?

zitat wikipedia:
Erwähnenswert ist es, dass sich das USB-MIDI-Protokoll vom herkömmlichen 
MIDI-Protokoll unterscheidet. Nachzulesen im midi10.pdf auf www.usb.org 
Kapitel 4 USB-MIDI Event Packets.
ich kenn mich in sachen USB nur in der mass storage class halbwegs aus, 
da kann ich mich drauf verlassen, dass die sachen laufen, wenn man sich 
an die spezifikationen hält. was mich jetzt ins grübeln bringt ist der 
oben zitierte satz, dass sich die protokolle offensichtlich ja 
unterscheiden...dann müßte ja demnach der treiber von windows die daten 
soweit "aufbereiten" dass das programm unabhängig davon ob's "echtes" 
midi oder usb-midi ist klar kommt...dazu schon was gelesen?

von ich&er (Gast)


Lesenswert?

letztendlich willst du einen usb-midi-converter basteln, richtig ? :-)

von Flo K. (Gast)


Lesenswert?

Genau, ich will mir halt nur einen Zwischenschritt sparen. MIDI ist für 
mich kein Problem, nur die Integration in die USB Ebene.

von ich&er (Gast)


Lesenswert?

zwischenschritt?

hast du denn den byte-strom mit den midi-daten schon irgendwo vorliegen?
die ansprache eines einzelnen midi-devices scheint mir wenn ich das so 
sehe schon mal gar nicht so trivial zu sein (laut class specs).

du müßtest ja auf jedenfall den usb-device-controller mit den 
informationen füttern, die die usb specs für die midi class erfordern 
(stehen ja in den midi specs widerum), die enumeration ist ja der erste 
schritt, ganz gleich welche daten man verschickt. wenn die richtig 
durchgeführt wird, sollte windows zb erstmal ein usb-midi-device 
anzeigen. offensichtlich müssen nach der enumeration 4 endpoints 
deviceseitig bereitgestellt werden -> seite 12, midi specs.

welches usb controller hast du dir denn ausgesucht?

von Flo K. (Gast)


Lesenswert?

Einen bestimmten habe ich noch nicht, aber ich tendiere zu den 
AT90USB.... Controllern von Atmel. Das mit dem weiteren vorgehen habe 
ich auch schon gesehen bzw. nur überflogen. Werd mich wohl erst mal 
hinsetzen dürfen und ein bisschen übersetzen ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.