C/C++ : USB Daten lesen und senden

Gast #1496585
Lesenswert?

Guten Morgen,

ich bin gerade dabei eine USB Verbindung zwischen einem Mikrocontroller 
und dem PC herzustellen. Der Mikrocontroller besitzt intern einen USB 
Controller.
Nun, wie kann ich auf der Windowsseite auf diesen USB Port zugreifen?
Gibt es unter Microsoft Visual Studio C++ 6.0 eine Möglichkeit den USB 
Port anzusprechen? Geht dies vielleicht mit "CreateFile" zum öffnen der 
Schnittstelle?

Besten Dank im voraus.
Persönliche Seite #1496626
Lesenswert?

USB ist keine Schnittstelle, mit der auf diese Art und Weise 
kommuniziert wird. Nicht ohne Grund steht da ein "B" im Namen, was für 
Bus steht, also die Möglichkeit, mehrere Geräte anzuschließen. Wie auch 
beim PCI-Bus.

Und also muss Dein Programm nicht mit der USB-Schnittstelle, sondern 
einem am USB angeschlossenen Gerät kommunizieren. Das geht auf zwei 
Arten und Weisen: Die Firmware Deines Gerätes implementiert eine 
USB-Standard-Geräteklasse wie HID oder CDC, und Dein Programm nutzt die 
vom Betriebssystem vorgesehene Unterstützung von Geräten dieser 
Geräteklassen, oder Dein Gerät verwendet ein eigenes Protokoll, für das 
Du einen Devicetreiber als Gegenstück entwickelst, damit Dein 
Betriebssystem und schlussendlich Dein Programm etwas mit Deinem Gerät 
anfangen können.

Letzteres ist auch ohne Devicetreiberentwicklung über eine Library 
namens libusb möglich, was die Komplexität des Unterfangens etwas 
reduziert.

Deutlich sinnvoller aber ist die Nutzung einer der 
Standardgeräteklassen; welche zu verwenden ist, hängt davon ab, was Dein 
Gerät machen soll und welcher Art die zu übertragenen Daten sind.
#1496920
Lesenswert?

Rufus t. Firefly schrieb:
> USB ist keine Schnittstelle, mit der auf diese Art und Weise
> kommuniziert wird. Nicht ohne Grund steht da ein "B" im Namen, was für
> Bus steht, also die Möglichkeit, mehrere Geräte anzuschließen. Wie auch
> beim PCI-Bus.
>
> Und also muss Dein Programm nicht mit der USB-Schnittstelle, sondern
> einem am USB angeschlossenen Gerät kommunizieren. Das geht auf zwei
> Arten und Weisen: Die Firmware Deines Gerätes implementiert eine
> USB-Standard-Geräteklasse wie HID oder CDC, und Dein Programm nutzt die
> vom Betriebssystem vorgesehene Unterstützung von Geräten dieser
> Geräteklassen, oder Dein Gerät verwendet ein eigenes Protokoll, für das
> Du einen Devicetreiber als Gegenstück entwickelst, damit Dein
> Betriebssystem und schlussendlich Dein Programm etwas mit Deinem Gerät
> anfangen können.
>
> Letzteres ist auch ohne Devicetreiberentwicklung über eine Library
> namens libusb möglich, was die Komplexität des Unterfangens etwas
> reduziert.

Oder man nutzt WinUSB
http://msdn.microsoft.com/en-us/library/aa476426.aspx
http://www.microsoft.com/whdc/connect/usb/winusb_howto.mspx
http://www.lvr.com/winusb.htm

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren