USB-Maus am AVR auslesen (Bedeutung der Daten)

Gast #945299
Lesenswert?

Hallo,

ich versuche eine USB-Maus auszulesen. Dabei bekomme ich letztlich vier 
Bytes uebertragen.

1. Byte: 0: keine Taste gedruckt, 1: linke Taste gedrueckt, 2: rechte 
Taste gedruckt, 4: Mausrad gedrueckt

4. Byte: 0: Mausrad bewegt sich nicht, 1: Mausrad wird nach oben 
gedreht, FF: Mausrad wird nach unten gedreht

2. Byte: meistens FE, wenn die Maus nach links bewegt wird und meistens 
02, wenn die Maus nach rechts bewegt wird.

3. Byte: meistens FE, wenn die Maus nach oben bewegt wird und meistens 
02, wenn die Maus nach unten bewegt wird.

Daran stoert mich das "meistens". Manchmal bekomme ich eben auch andere 
Daten angezeigt. Vorallem wenn ich die Maus schnell bewege.

Gibt es irgendwo eine Beschreibung, was in den 4 Bytes letztlich 
drinsteckt? Die muss es doch eigentlich geben, ich suche aber schon 
ueber eine Stunde und habe nichts gefunden.

Besonders haeufig tauchen andere Werte bei schnellen Bewegungen und beim 
drehen der Maus auf.

Viele Gruesse
Ralf
Gast #945345
Lesenswert?

Wenn Du es schaffst, eine USB-Maus auszulesen, hast Du demnach mit dem 
AVR einen USB-Host aufgebaut, die Maus enumeriert und bekommst bereits 
die Reports von der Maus. Das ist respektabel. Da frage ich mich, wieso 
Du noch so eine einache Frage stellst :-)

Die Bedeutung der Bits ist im HID Descriptor verzeichnet, den Du 
theoretisch beim Enumerieren dekodieren müßtest. Anhand dieser Info 
musst Du dann die entsprechenden HID Usages abklappern:

http://www.usb.org/developers/devclass_docs/Hut1_12.pdf

Vielleicht steht im Dokument schon ein fertiger dokumentierter Maus 
Descriptor.

Andererseits siehst Du die Bytes eh schon: Im Endeffekt wird es so sein, 
dass die Maus die Daten so schnell übertragen kann, dass jede Bewegung 
um ein Pixel einen Report zur Folge hat. Immerhin kann die Maus im 
Millisekundentakt Daten senden. Je nach Geschwindigkeit ändert sich 
jedoch die Häufigkeit der Sendung. Wenn's noch schneller wird, werden 
dann auch größere positive oder negative Werte übertragen.
Gast #945374
Lesenswert?

Danke fuer die Links. Und ich gebe zu ich habe einen 
USB/RS232-Converter.

Ich will erst wissen, ob alles so funktioniert wie ich es mir vorstelle 
bevor ich auf den Converter verzichte.

(Der Converter ist derzeit mein Laptop ;))
#945863
Lesenswert?

Das "Verzichten auf den Converter" dürfte ein viel größeres Problem 
sein, da die Kommunikation zu USB-Geräten sehr aufwändig ist.

Du könntest einen Vinculum Chip nutzen, der sollte auch HID Geräte 
auslesen können (sagt zumindest das Firmware Manual), aber das müsstest 
du wohl erst noch selbst ausprobieren.
Gast #945879
Lesenswert?

>Du könntest einen Vinculum Chip nutzen, der sollte auch HID Geräte
>auslesen können (sagt zumindest das Firmware Manual), aber das müsstest
>du wohl erst noch selbst ausprobieren.
Er kann zumindest den USB Raketenwerfer bedienen, und der ist wohl ein 
HID ;-)
Gast #946015
Lesenswert?

USB zu seriell Adapter???

Was die Daten angeht: Die Achsendaten enthalten jeweils die Impulse seit 
dem letzten Datenpaket als vorzeichenbehafteter Wert. Also sollte da 
tunlichst was anderes rauskommen wenn sich die Maus schneller bewegt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren