Forum: Mikrocontroller und Digitale Elektronik USB: Endpoint EP0 für eigene Kommandos nutzen


von Karlheinz (Gast)


Lesenswert?

Kann ich den Endpoint (EP0) eines USB-Geräts (hier: Mass Storage Device) 
mit eigenen Kommandos erweitern.

Idee: Der Massenspeicher-Treiber von Windows greift auf das USB-Gerät 
zu. Gleichzeitig möchte ich von einem 2. Programm aus Kommandos an das 
USB-Gerät senden. Ist dies möglich? Oder bin ich auf einem Holzweg?

von Christian R. (supachris)


Lesenswert?

Hm, ich glaube das wird nicht gehen. Der Windows MSD Treiber krallt sich 
ganz bestimmt das Gerät exclusiv, und meines Wissens kann man dann nicht 
über den Control EP noch zugreifen. Aus der gleichen Anwendung heraus 
geht das natürlich, da kann man per Set Feature und Get Feature und 
Vendor Requests noch jede Menge über den Control EP machen.

von Εrnst B. (ernst)


Lesenswert?

Du kannst innerhalb eines USB-Gerätes mehrere Interfaces mit 
verschiedenen Funktionen definieren.

z.B. neben dem MSD noch ein HID, wie es diese Festplattengehäuse mit 
"Backup-Taster" machen.

dann kriegt jedes Interface seinen eigenen Treiber, und die kommen sich 
nicht in die Quere.

von Karlheinz (Gast)


Lesenswert?

Heißt das, daß das USB-Gerät neben dem MSD noch ein 2. Interface 
unterstützen muß (z. B. HID), damit Windows den entsprechenden Treiber 
lädt, den ich dann wiederum von meinem Programm anspreche?

Problem: ich habe nur noch einen Endpoint (EP3) frei und möchte senden 
UND empfangen.

von Εrnst B. (ernst)


Lesenswert?

Karlheinz wrote:
> Heißt das, daß das USB-Gerät neben dem MSD noch ein 2. Interface
> unterstützen muß (z. B. HID), damit Windows den entsprechenden Treiber
> lädt, den ich dann wiederum von meinem Programm anspreche?

Nein, ist nur eine Möglichkeit, wie's sehr einfach geht. du kannst 
natürlich auch auf die vorhandenen MSD+HID Treiber verzichten, und alles 
in einem eigenen Windows-Treiber machen.

> Problem: ich habe nur noch einen Endpoint (EP3) frei und möchte senden
> UND empfangen.

Das könnte schon reichen. Hab grad kein solches Plattengehäuse da, aber 
ein anderes Gerät, dort ist das zweite Interface auch HID, und das kommt 
mit nur einem Endpoint aus.

der EP0 gilt dann für beide Interfaces gleichzeitig, wie das dann im 
Detail geregelt ist musst du selber nachlesen.

von Karlheinz (Gast)


Lesenswert?

>> Nein, ist nur eine Möglichkeit, wie's sehr einfach geht. du kannst
>> natürlich auch auf die vorhandenen MSD+HID Treiber verzichten, und alles
>> in einem eigenen Windows-Treiber machen.

Habe schon genug Probleme, da brauch ich mir Window nicht auch noch 
aufzuhalsen.

Du hast mich auf den richtigen Weg gebracht. Ein paar Sachen habe ich 
schon quergelesen und es sieht so aus, daß ein Endpoint ausreicht.

Vielen Dank für alle Beiträge.

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.