mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB Usage Id's für eigene Zwecke verwenden


Autor: Hansi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin zusammen,

folgende Frage:

Ich habe einen USB-Tastaturcontroller, den ich frei programmieren kann. 
Also die Tastenbelegungen der Tasten eigene Usage Id's zuweisen. Soweit 
kein Problem mit "normalen" Tasten wie ABCD....

Jetzt habe ich einen Buttonhandler der auf bestimmte Make/Break-Codes 
reagiert und dadurch bestimmte Programme aufruft. Das funktioniert alles 
soweit wenn ich ganz normale Tasten hernehme die auch wirklich auf einem 
Keyboard vorhanden sind. Dadurch, dass es eigene Programme sind soll 
natürlich auf herkömmliche Tasten nicht reagiert werden. Also brauch ich 
wohl Usage Id's, die noch nicht vergeben sind. Bei Microsoft hab ich ein 
Dokument gefunden (Teilausschnitt im Anhang) da stehen alle Usage Id's 
drauf. Dort findet man dann einige mit "Reserved". Habe die mal in 
meinen Controller gebrannt und mit einem Tool geschaut ob da Scancodes 
ankommen. Bei 3 Tasten funktionierts, beim Rest nicht. Also auch keine 
wirklich gute Möglichkeit.


Jemand Ahnung wie das mit den Usage Id's abläuft? Ich muss sicher 
stellen, dass ein User nicht durch die normalen Tasten auf der Tastatur 
die Programme starten kann. Gibt es überhaupt "freie" Usage Id's?


Danke

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Eventuell kann dir die Raw Input API helfen.
=>http://msdn.microsoft.com/en-us/library/ms645536(VS.85).aspx

Lg

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird nichts. Entweder sind die UsageIDs in der HID Spec definiert 
und damit zum größeren Teils als Standardtasten verfügbar, oder Du musst 
den Controller dazu bringen Vendor Specific Usages zu senden. Das wird 
aber kein Standardcontroller erlauben, dazu müsste man u.a. den Report 
Descriptor ändern können.

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Mars: Softwareseitig sollen die Brake/Make-Codes nur empfangen werden. 
Damit hab ich weniger zutun. Ich muss nur meinen Controller dazu bringen 
die richtigen Codes zu senden.

@Guido: Den Reportdescriptor kann ich auch verändern. Wie meinst du das 
genau? Was ist der Unterschied zu den normalen Usage Id's?

Bei dem Chip handelt es sich übrigens um dem ALCOR AU9410.

Gruß

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zieh Dir mal die HID Spezifikation. Es gibt die Möglichkeit Vendor 
specified IDs zu definieren. Die werden von MacOS und Windows ignoriert, 
Linux versucht die leider zu dekodieren, was Freude bereitet und einen 
Treiber erforderlich macht um an solche Daten ranzukommen.

Zuverlässig klappen kann das aber nur wenn man eine eigene VendorID hat.

Besser wäre es einen Chip zu nehmen, der sich garnicht erst als Tastatur 
anmeldet.

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wenn Windows aber die Daten ignoriert, wie soll ich dann rankommen? Dann 
müsste ich ja auch einen Treiber haben der vorher die Daten abgreift.

Gruß

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RawInput über den Tastaturtreiber.

Wie gesagt ist es aber sinnvoller einen Chip zu verwenden, der garnicht 
erst als Tastatur auftaucht wenn er auch nicht als Tastatur 
funktionieren soll.

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha ok, hast du eine Empfehlung was man da verwenden könnte? Wie gesagt, 
softwaremäßig gibt es keinen Treiber oder was. Ich kann also nur das 
übernehmen was Windows mir liefert.

Gruß

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joystickcontroller oder Generic HID, z.B. den IO-Warrior.

Wie viele Tasten sollen es denn sein?

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
max. 10 Tasten

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, dann würde ein IO-Warrior gut passen.

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder ein ATmega8, der also USB-Joystick läuft.
zB. http://www.mictronics.de/?page=avr_usb_joystick

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

die Versionen hören sich schonmal nicht schlecht an!

Jetzt muss ich aber doch nochmal eine Frage loswerden:

Wenn ich einfach irgendeine nicht belegte Usage Id in mein Controller 
eintrage, und dann einfach mit der Software schaue ob da irgendwas 
ankommt. Könnte doch auch funktionieren? Oder schmeißt Windows mit 
Sicherheit die Id bzw. die Make/Brake Codes weg weil sie laut Liste 
nicht vergeben sind?

Gruß

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Windows schmeißt die Usages weg die es nicht kennt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.