INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Automatisches Erkennen verschiedener USB-Eingabegeräte
21.10.2013, 17:30
Beitrag #1
Automatisches Erkennen verschiedener USB-Eingabegeräte
Hallo Freunde,
ich suche Rat bei folgendem Problem:
Ich steuere mit meinem Atmega 2560 unter anderem zwei Servos an. Als Eingabegeräte möchte ich mich nicht nur auf ein Joystick beschränken, sondern auch mit Xbox- und Ps2 Controller steuern können. Ich habe die Software für jedes einzelne Eingabegerät geschrieben, muss aber beim Wechsel des Eingabegerätes jedes mal die entsprechende Software flashen. Gibt's einen Trick, dass der Arduino automatisch das Eingabegerät erkennt und den entsprechenden Treiber läd?
Ich komm einfach nicht drauf.
Vielen Dank, ich bin für jeden Tipp dankbar!
Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2013, 10:18
Beitrag #2
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Hallo dbAd,

welche Libs benutzt du um die USB Geräte abzufragen?
Vielleicht haben die genutzten Libs ja auch die Möglichkeit die vendor- bzw. product - ID der angeschlossenen Geräte auszulesen. Dann könnte man die Sketche vielleicht zusammenfassen.

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2013, 12:55
Beitrag #3
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Hey,
danke für die Antwort; ich arbeite mit der "USB_Host_Shield_20". Dort sind eben von Haus vordefinierte Funktionen wie XBOXUSB.h und PS3USB.h drin, die ich dann einfach in mein QC eingebunden habe. Ich glaube nicht dass man hier die IDs auslesen kann.
Danke trotzdem
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.10.2013, 13:26
Beitrag #4
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Hallo DbAd,

wenn ich das richtig gelesen habe gibts in den Klassen für die geräte immer eine poll-Funktion.
Die könnte man doch benutzen um zu herauszufinden welches gerät angeschlossen ist.
Dann sollte irgendwo noch ein taster hin den du drückst wenn du das Gerät wechselt. Danach wird der Sketch über einen Sprung neu gestartet und über poll wieder festgestellt welches gerät dran ist.
oder du nimmst die time.h -lib und indentifizierst per "schedule" das angeschlossenen Gerät per poll.

So müsste es eigentlich gehen.

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.10.2013, 12:46
Beitrag #5
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Hey Ricardo,
danke für die Antwort und Entschuldigung für meine verspätete Rückmeldung.
Wo hast du denn die Information über diese poll-function her. Ich kann hierüber nichts finden. Ich denke das wäre die einfachste Lösung, da ich auch schon einen "Reset" drin habe.
Danke nochmal,
DbAd
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.10.2013, 22:24
Beitrag #6
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Hallo DbAd,

die verfügbaren Funktionen kann man gut in den .cpp - Dateien der Libraries angucken.
Die poll-function in der .cpp-Datei für jede Geräteart führt zurück auf die "getusbtaskstate"-Funktion in usb.cpp. Deswegen musst du immer die usb.h mit in den/das Sketch einbinden und rufst über "getusbtaskstate" eigentlich "poll" für das jeweilige Gerät auf.Wie das geht ist zB. hier zu sehen:
http://www.circuitsathome.com/communicat...ces-part-1

Hope it helps!

Grüße Ricardo

PS: So gute Artikel/Beschreibungen wie zu den USB-Libraries sind selten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.10.2013, 17:09
Beitrag #7
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Danke nochmal für die Mühe!
Ich lese das jedoch anders. "GetUsbTaskState" gibt keine Rückmeldung darüber welches Gerät angeschlossen ist, sondern leider nur über die Verfügbarkeit (konfigurieren oder lauffähig).
Ich werde weiterhin versuchen das Problem zu lösen und selbstverständlich meine Lösung dann hier bereitstellen!
Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.10.2013, 17:33
Beitrag #8
RE: Automatisches Erkennen verschiedener USB-Eingabegeräte
Hallo DbAd,

da hast du natürlich völlig recht, habe ich gepennt.
A-Bär: Im 1. Skript des Artikels wird ab Zeile 55 ein Poll mit "getReport" gemacht. Dabei werden die Inhalte von Reportpuffern verglichen. Wenn die sich ändern ist ein anderes Gerät als vorher am USB Port.
Wäre auch mal einen Test wert.

Grüße Ricardo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Telefon-Nummer erkennen - Schaltung auslösen harryba 4 240 13.10.2016 10:12
Letzter Beitrag: hotsystems
  SoftwareSerial Baudrate automatisch korrekt erkennen - geht das? Gelegenheitsbastler 5 526 21.04.2016 12:32
Letzter Beitrag: SkobyMobil
  Dauer des Tastendrucks erkennen - wie? Gelegenheitsbastler 11 927 08.12.2015 17:30
Letzter Beitrag: Binatone
  Objekt mehrfach erkennen Zerebrator 1 441 02.08.2014 12:25
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste