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
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.
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.
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 ;))
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.
>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 ;-)
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.