Forum: PC-Programmierung C/C++ : USB Daten lesen und senden


von neuling (Gast)


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.

von neuling (Gast)


Lesenswert?

Es ist ein 32bit Microcontroller von der Firma NEC.
Typ: μPD70F3783

von Rufus Τ. F. (rufus) Benutzerseite


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.

von neuling (Gast)


Lesenswert?

Danke für deine Antwort.
Ich denke die erste Variante trifft bei mir zu, denn
ich hab im Datenblatt was von CDC Kommunikation gelesen.

von Arc N. (arc)


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

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.