Forum: PC Hard- und Software Atmega 16u4 - Probleme mit der Kommunikation per Usb


von Jan R. (d3m0)


Lesenswert?

Guten Tag,

ich bin neu im Programieren von Sofware die über Usb mit einem Atmega 
16u4 funktionieren soll. Der 16u4 meldet sich erfolgreich als HID an. 
Jetzt will ich mit Visual C++ mir zugriff verschaffen doch da fangen 
meine Probleme an. Ich habe intensiv versucht durch Internetsuche mir 
die Infos die ich brauche zubeschaffen doch leider ohne Erfolg. Auch Jan 
Alexson konnte mir nicht weiter helfen. Meine vorgehens weise war 
bisher:

 - Guid beschafft
 - Handel erstellt

Wenn ich jetzt versuche einen File anzulegen in den ich 8Bits schreiben 
kann werden keine Daten an den Atmega gesendet. Ich öffne den Handel und 
will mit CreateFile(....) weiter machen.

Ich habe mich an Alexson´s Beispiel gehalten:
DeviceHandle=CreateFile(DetailData->DevicePath, 
GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE
,(LPSECURETY_ATTRIBUTES)NULL,OPEN_EXISTING,0,NULL);

Hier tritt dann ein Problem auf, nämlich das ich  den Handel nicht mehr 
öffnen kann.

Es wäre super wenn mir jemand weiter helfen könnte. Oder vllt kennt 
jemand ja ein Beispielprogramm mit Quellcode was ich mir anschauen 
könnte und von ihm lernen könnte :-) Natürlich ist das die faulere 
Methode ich hab auch nichts dagegen wenn ich Tipps kriege wo ich weitere 
Infos finden kann :-)

Mit freundlichen Grüßen

Jan

von Potter (Gast)


Lesenswert?

Das was Du da beschreibst ist kaum nachzuvollziehen. Wenn Du Quellcode 
suchst, dann bist Du bei J.A. genau richtig:

http://lvr.com/hidpage.htm

USB ist etwas, das Zeit erfordert und nicht husch husch zu machen ist!

Gruß Potter

von ... (Gast)


Lesenswert?

Jan R. schrieb:
> Ich öffne den Handel und
> will mit CreateFile(....) weiter machen.
>
> Ich habe mich an Alexson´s Beispiel gehalten:
> DeviceHandle=CreateFile(DetailData->DevicePath,
> GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE
> ,(LPSECURETY_ATTRIBUTES)NULL,OPEN_EXISTING,0,NULL);
>
> Hier tritt dann ein Problem auf, nämlich das ich  den Handel nicht mehr
> öffnen kann.

Ziemlich wirres Zeug was Du da schreibst. Aber warum willst Du den 
Handle zweimal öffnen?

von Jan R. (d3m0)


Lesenswert?

Ja husch husch wollte ich das auch nicht machen. Wollte mir eine 
herrausforderung stellen in hardwarenaher Programierung :-) Ich hab mich 
allerdings etwas unglücklich ausgedrückt, für mich klang es gestern noch 
sehr schlüssig.
Was ich genau meinte war bei dem Beispielcode gibt es ja
die stelle GENERIC_READ|GENERIC_WRITE.
Wenn diese dort so steht dann kann ich wenn ich das programm neustarte 
nicht mehr mein Divice online schalten und den handle öffnen. Erst wenn 
ich diese Zeile mit 0 ersetze geht dies wieder.
Die Seite von J.A. kenn ich auch schon und hab versucht mir da nützliche 
Informationen für mich raus zu filten. Ich hoffe das jetzt die Infos 
besser sind und mir vllt jemand nen Tipp geben kann der mir weiter 
hilft.

Gruß Jan

von Jan R. (d3m0)


Lesenswert?

Ich bin gerade bei meiner suche auf einen gestoßen der ebenfalls ein 
Problem mit diesem Befehl hatte. Bei ihm hat es nur funktioniert wenn er
anstatt GENERIC_READ|GENERIC_WRITE nur GENRIC_WRITE stehen hatte. Dies 
habe ich dann auch versucht und jetzt kommt das Programm wieder bis zu 
dem Punkt wie vorher wenn ich dort die 0 eingesetz hab. Was mach ich 
falsch oder was hab ich noch nicht verstanden und wo könnte ich es 
nachvollziehbar nachlesen.

Gruß Jan

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.