Tach Forum,
ich versuche seit 2 Tagen eine Anwendung(WindowsXP) für AT90USB via
LibUSB-Win32 zu programmieren. Irgendwie gehen mir langsam die Kräfte
aus, vorallem ich kann nicht 100%tig sagen, ob es an meiner Firmware
liegt oder an PC Anwendung.
Kennt jemand das Problem:
Hallo!
Ich habe leider auch das selbe Problem mit usblib-win32.
Meine Anwendung bleibt bei aufruf der Funktion
1
set_configuration(devh,1)
einfach stehen, ich kann nichts mehr machen, nur noch den Computer neu
starten, da sich der Prozess auch nicht beenden lässt.
Mein code entspricht zienlich genau dem Ablauf wie schon oben geposted.
Um den Controller handelt es sich um einen Chipcon cc2511.
Bitte um Hilfe, ich kämpfe auch bereits seit Tagen mit diesem Problem.
Danke!
ALso ich habe jetzt noch ein wenig recherchiert. Offenbar gibt es
Unterschiede bei Timeouts oder "zero length packets".
Als Quelle für diese Imformatin habe ich folgenden Link:
http://sourceforge.net/forum/message.php?msg_id=3924387
So weit ich mal zufällig auf der usb.org Website unter den FAQ etwas
aufgeschnappt habe, gibt es keine Festgelegten Timeouts für
set_configuration oder ähnliches.
Das Forum für libusb-win32 auf sourceforge.net scheint auf jeden Fall
ein guter Anlauf zu sein.
Jedenfalls glaube ich das Problem liegt auch auf der Seite des
Controllers. Die usb_set_configuration() funktioniert nämlich bei
anderen USB Geräten (Getestet bei einem Memory stick). Ich werde
zuschauen, das im Framework auch ja ein Acknowledge implementiert ist.
Viel Glück beim coden!
> Jedenfalls glaube ich das Problem liegt auch auf der Seite des> Controllers.
kann ich bestättigen. hab mit verschiedenen Firmwareversionen probiert
und es ging.
Und nochmal ich. Ein acknowledge wird offenbar nicht vom Framework
generiert. Ich habe aber zu viel schiss das Framework zu ändern. Ich
habe stattdessen etwas anderes ausprobiert:
Der Aufruf der Funktion glückt zwar, aber ich kann es ist irgendwie
nicht das gleiche. Vor allem kann ich das Interface nicht besetzen,
usb_claim_interface danach bringt eine Fehlermeldung.
Wie ich nun festgestellt habe, kann der controller nicht mit
klar kommen. Es stetzt den Status des default Endpoints auf STALL und
friert anscheinend dadurch meine Host-Anwendung ein.
da ich kein packe-sniffer habe, weis ich nicht was libusb-win32 mit dem
aufruf von set_configuration übermittelt, es gibt da auch wieder ein
Rattenschwanz an Parametern.
Jetzt muss ich Wohl oder Übel doch an das Framework ran.
Also.... Die Funktion usb_set_configuration funktioniert in der libusb
unter Linux einwandfrei...
Auch ein in das Framework integrierte Acknowledge in Form eines
Zero-length packet auf EP0 hat kein positiven Effekt.
Kann mir jemand weiterhelfen?
Ich will ja keine alten Beiträge aufwärmen, aber hast du noch eine
Lösung für dein Problem gefunden?
Ich habe nämlich genau das selbe Problem unter Linux mit libusb und
einem AT90USB1287...
Ich habe auf dem Controller ein HID Keyboard laufen mit einem
zusätzlichen OUT-Endpunkt, auf den ich Tastenbelegungsdaten schicken
will.
Ich krieg im Endeffekt den selben Fehler bei usb_set_configuration und
dann friert mir der µC ein...
Hallo
Ich habe ein ähnliches Problem mit usb_bulk_write. Es werden einfach
keine Bulkdaten verschickt. Ich habe auch schon ausgiebig recherchiert,
fand allerdings keinen hilfreichen Thread..
Mein Code (Delphi) sieht folgendermassen aus...:
1
bus:=usb_get_busses;// Return the list of USB busses found
Transresult liefert mir den Wert -22. Wenn ich in einem USB-Monitor den
Datentransfer beobachte, dann sehe ich auch, dass keine Bulk-Daten
geschickt werden. Habt ihr vielleicht eine Idee?
Der Manufacturer-String wird allerdings richtig ausgegeben.
Vielen Dank für eure Tipps
Geri
Hat eigentlich nichts mit dem ursprünglichen Thread zu tun oder?
Wär besser, wenn du nen eigenen Thread eröffnet hättest, da findet sich
meistens schneller Hilfe...
@ comicinker
> ich kann nichts mehr machen, nur noch den Computer neu> starten, da sich der Prozess auch nicht beenden lässt.
Kannst du nicht "STRG + ALT + Entf" drücken und den Prozess dann im
Task-managen beenden?
Hallo ... ich stehe genau so vor dem gleichen Problem ... hab auch als
MC den CC2511 von Texas und würde nun gerne mit USB_CLAIM_INTERFACE()
eine Verbindung aufbauen ... gibts vielleicht jemanden der mir dort
weiterhelfen kann?
Gruß Stefan
Schaut euch vielleicht mal den Quellcode von AVRDude an. In den mit
"usb" beginnenden Dateien werden die ganzen Funktionen
(usb_claim_interface, usb_bulk_write,...) verwendet.
Da habe ich mich auch schon versucht durchzuwühlen.
Allerdings weiß ich auch nicht genau an welcher Stelle es genau harkt
und daher ist das eher ein Henne-Ei-Problem.
Hi,
habe mir mit dem LibUSB-Inf-Wizard eine passende inf-Datei für mein
Device erstellt. Im Geräte-Manager taucht das nun in einer Extra
HW-Kategorie "LibUsb-Win32 Devices" auf. Gibt es eine Möglichkeit, das
mein USB-Gerät mit bei den normalen "USB-Controller"-Geräten aufgeführt
wird? Ich vermute, dass ich etwas an der inf. abändern muss, konnte aber
dazu keine Informationen finden.
Is zwar schon nen wenig her, aber ich schreibe das mit dem Device mal
eben trotzdem, da ich gerade den USB Treiber für ein AT91SAM7S64
erstellt habe und auch ein wenig modifiziert habe...
in der Ini datei gibt es einen Eintrag um die DeviceKlasse zu ändern
1
[libusb_class_install_add_reg]
2
HKR,,,,"LibUsb-Win32 Devices"
3
HKR,,Icon,,"-20"
hier muss man nur den text in den Anführungsstrichen ändern. Zusätzlich
könnte man jetzt noch das Icon ändern.
Wenn man es zB in folgendes ändert:
1
[libusb_class_install_add_reg]
2
HKR,,,,"USB-Controller"
3
HKR,,Icon,,"-20"
erscheint das Gerät auch in der Sammelgruppe....
Wer den namen seines Treibers abändern möchte, kann dies nachträglich
noch in der ini weiter unten machen, so wie ich hier nach C399010020