Forum: PC-Programmierung USB-HID in MFC


von Willi08 (Gast)


Lesenswert?

Hallo,
habe ein Projekt mit AVR-USB von (obdev punkt at) (weiss nicht, ob ich 
einen link hier reinstellen darf) - das "HID-Data" Beispiel.

Nun möchte ich das PC-Beispielprogramm, welches als Consolenanwendung 
einwandfrei funktioniert in ein MFC-Dialog Programm einbringen.
Leider bekomme ich auf einmal mehrere Fehlermeldungen beim Compilieren 
(z.B. bei malloc() etc.), habe aber inzwischen alle beseitigen können 
bis auf folgenden:

error C2027: Verwendung des undefinierten Typs "usbDevice"
Siehe Deklaration von 'usbDevice'

Dies ist folgendermassen deklariert:
typedef struct usbDevice usbDevice_t;

In der Konsolenanwendung (auch mit VC6 kompiliert) kommt dieser Fehler 
nicht. Ich finde aber auch dort nirgends wo usbDevice herkommt.
Ist ausschliesslich in dieser Headerdatei vorhanden.
(habe schon eine Volltextsuche in allen Dateien c,h,lib gemacht)

Bitte helft - suche schon einen ganzen Tag lang.

PS: ich poste hier, da ich mich bei obdev erst anmelden muss.

Vielen Dank schonmal!

von Criuix (Gast)


Lesenswert?

Natürlich muss du den struct usbDevice auch irgentwo definieren. Nur 
typedef reicht nicht. Woher soll c wissen was usbDevice ist ? Den 
gesamten Quellcode sollte man zur Analyse natürlich haben. Irgentwo muss 
sich auch die Konsole die Definition hersaugen.

von Willi08 (Gast)


Lesenswert?

Ist mir ja klar, dass dieser irgendwo definiert sein muss.
Ich hatte gehofft mir kann jemand sagen wo (weil das jemand kennt).
Wie gesagt habe ich im gesamten Projekt mit Volltextsuche nichts 
gefunden.
Werde mal beide Projekteinstellungen vergleichen ob dort noch etwas 
eingebunden wird, was ich nicht gefunden habe.
Kommentiert ist die betreffende Zeile mit:

/* Opaque data type representing the USB device.

von Holger (Gast)


Lesenswert?

Ist da noch eine .lib Datei dabei ???
Mit dem Project-Manager
Dem Pojekt hinzufügen ... Dateien .*.c *.c++ ..
bzw *.lib .
Die Lib-Datei mit hinzufügen genau wie die *.c Datei.

Gruss Holger.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Wie gesagt habe ich im gesamten Projekt mit Volltextsuche nichts
> gefunden.

Exakt welches funktionierende Konsolenprojekt verwendest Du denn als 
Ausgangsbasis?

von Willi08 (Gast)


Lesenswert?

obdev.at/downloads/avrusb/avrusb-20081126.zip
und dort -> examples -> hid-data

Ich habe aber inzwischen eine andere Variante gewählt:
www.ime.jku.at/TUSB/#implement

Ist alles mit API Aufrufen und funktioniert nach ein wenig lib-suchen 
WINVER setzen und kopieren einwandfrei.
War nur schwer, wenn man vorher noch nix mit USB gemacht hat (ausser 
Spannung klauen ;)
Auf das Projekt kann ich aber gut aufbauen.

Keine Ahnung warum das andere nicht ging.

Trotzdem Vielen Dank !
PS.: Interressieren tut es mich allerdings immernoch - auch wenn ich nun 
ein anderes Beispiel gewählt habe.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

So, jetzt habe ich mir das mal angesehen, struct usbDevice ist 
Bestandteil von libusb bzw. libusb-win32.

von Willi08 (Gast)


Lesenswert?

Vielen Dank Rufus,
ich hatte die Beschreibung so verstanden, dass für dieses Beispiel die 
Libusb nicht benötigt wird.

Na gut...

Trotzdem noch eine Frage:
Ich habe die libusb-win32-src-0.1.12.1.tar
hier und entpackt ABER wo zum Teufel finde ich diese Definition?

Danke

von Christian R. (supachris)


Lesenswert?

Willi08 wrote:

> Trotzdem noch eine Frage:
> Ich habe die libusb-win32-src-0.1.12.1.tar
> hier und entpackt ABER wo zum Teufel finde ich diese Definition?

Das sind ja auch die Treiber-Quellen, da findest keine Elemente des API. 
Du musst das File libusb-win32-device-bin-0.1.12.1.tar.gz runterladen, 
das ist der kompilierte Treiber plus DLL plus Header-File und Library. 
Dann hast du auch deine Strukturen usw.

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.