USB-Maus am AVR auslesen (Bedeutung der Daten)

Gast #945299
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 #945325
Womit liest du ne USB Maus aus?
Aber das sieht sehr ähnlich aus wie das Protokoll bei PS/2 Mäusen und 
dazu liefert Google z.B. das: 
http://www.computer-engineering.org/ps2mouse/
Die XY Bewegungen werden als relativer Wert in 2er Komplementdarstellung 
übertragen. Wenn du die gesendeten Werte aufaddierst bekommst du eine 
absolute Position, die mehr Sinn ergeben sollte.
Gast #945345
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
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
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
>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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.