mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB-Maus am AVR auslesen (Bedeutung der Daten)


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Achim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Schwurbl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;))

Autor: Florian Haskamp (trapperjohn)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Florian Haskamp (trapperjohn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hehe, okay :D

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.