Hallo Leute, ich soll ein Gerät zur Maussteuerung entwickeln, welches X-Y-Koordinaten ausgibt. Zur Zeit wird es mit einem FTDI Chip als COM-Port angesprochen. Nun soll ein eigener Treiber geschrieben werden, damit das Gerät von WIN als Maus erkannt wird und die Koordinaten in Mausbewegung umsetzt werden. Kann mir jemand ein paar Tips geben wie ich am besten vorgehen soll? Mit welcher Programmiersprache schreibe ich sowas und was brauche ich sonst so? Wie aufwendig ist sowas und gibt es ein gutes Buch auf Deutsch dazu? Ich bin ein ziemlicher Neuling auf dem Gebiet, so bin ich für jede Hilfe dankbar. Danke schon mal im Vorraus!
Gast G. schrieb: > Kann mir jemand ein paar Tips geben wie ich am besten vorgehen soll? Für diese Aufgabe ist ein FTDI der denkbar schlechteste Chip (und abgesehen davon auch noch schweineteuer). "Im" FTDI gehts sowieso nicht, bDeviceClass ist immer 0 und kann auch nicht geändert werden. Das Programmieren eines "Zwischenteil-Treibers" ist ein nicht unerheblicher Aufwand. Ist Windoof im Spiel, das nehme ich jetzt einfach mal an, wirst Du ebenso mit jeder neuen Windoof Version einen neuen Treiber zur Verfügung stellen müssen. Irgendwann wirst Du dann zudem feststellen, daß es Kombinationen von Chipsätzen/Software/etc... gibt, auf denen das zum verrecken nicht laufen will. Da ist langfristiges Herumbasteln, im wahrsten Sinne des Wortes, vorprogrammiert. Vom ganzen Spaß mit der Zertifizierung, falls notwendig (Win7), mal ganz abgesehen. Einzige, aber nicht günstige, Ausnahme: Treiberpakete, wie z.B. von Thesycon, verwenden. Gast G. schrieb: > Ich bin ein ziemlicher Neuling auf dem Gebiet Laß es bloß sein ;-) Das wird nur Ärger geben... Nimm Abstand vom FTDI und setze irgendeine kleine MCU ein (Cypress, ...). Das spart Hardware und Software Entwicklungs-/Wartungs-Kosten. Softwareaufwand für Treiber gleich Null.
Such mal bei Microchip nach den USB Beispielen (Application Library). Da ist "USB Device - HID - Mouse" drin. HID Maus geht normalerweise ohne Treiber, also einfacher gehts nicht. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en547784
So der Treiber nicht des Schreibens wegen geschrieben werden soll, ginge es auch mit V-USB, auf http://www.obdev.at/products/vusb/projects.html gibt's n paar Beispiele. Analog zum Vorpost, nur auf AVRs.
Gast G. schrieb: > ich soll ... > Ich bin ein ziemlicher Neuling DIE studentenkombination der neuzeit... warum kann eigentlich keiner mehr das, was er macht?
Michael M. schrieb: > warum kann eigentlich keiner mehr das, was er macht? Naja, "learning by doing", oder ? :)
@ Michael M. naja jeder muss ja schließlich mal anfangen. Und wenn er "passt schon"-Entwicklungen weiterführt, wird er im Studium (daher vermutlich das "soll") Probleme bekommen, aber das soll hier ja schließlich nicht unser Problem sein. Er hat ne Frage gestellt und sogar gefragt WIE er das machen kann usw. Normalerweise frägt jemand, dem alles egal ist nach nem fertigen Code. Also einfach bitte nur helfen -.- Mein Vorschlag wäre auch HID über nen AVR mit V-USB.
Michael M. schrieb: > warum kann eigentlich keiner mehr das, was er macht? Eventuell liegt das auch nur an deiner etwas eingeschränkten Sicht? Das hier ist ein Forum, jeder der es bereits weiß wird wohl kaum danach fragen müssen. Also sparen wir uns HIER mal diese Seitenhiebe.
Hallo nochmal, habe ich das richtig verstanden, dass wenn ich ein uC mit integriertem USB nehme, z.B den PIC24FMCU und den als HID-Divice configuriere, dass er dann automatisch als Maus erkannt wird? Bis jetzt berechne ich die X-Y-Koordinaten im Controller, die müssten dann ja auch noch nach dem entsprechenden Prtokol "verpackt" werden - oder?
> ...und den als HID-Divice configuriere, dass er dann automatisch als Maus > erkannt wird? > Bis jetzt berechne ich die X-Y-Koordinaten im Controller, die müssten > dann ja auch noch nach dem entsprechenden Prtokol "verpackt" werden - > oder? Ersetze "konfigure" durch "programmiere", dann klappts -> das ist nämlich genau das, was du richtig erkannt hast bzgl. der Protokollsache: X/Y-Daten berechnen/Maustasten auswerten -> HID-Protokoll (HID-Maus) Also ist Datenberechnung/Tastenabfrage ein Teil, und das HID-Protokoll der andere Teil. Ralf
Du ersparst dir unter Umständen viel Arbeit wenn Dein Eingabegerät von Haus aus als HID erkannt wird. Weil Du immer von X-Y Koordinaten redest, mach dich mal schlau was HID überhaupt ist. Eine Maus liefert z.B. keine absoluten Koordinaten. Dies kann Probleme bereiten wenn Du nur ein begrenztes Bewegungsfeld zur Verfügung hast (vrgl. Maus-Modes vom Bamboo-Tablet).
Es gibt eine Haufen Buecher von Jan Axelson zum Thema "ich und USB", die sollt man sich schon reinziehen.
HID kann auch für Joysticks verwendet werden. Dann hat man XY Koordinaten. Allerdings per default nur in 8 Bit Auflösung. Mit entsprechenden Descriptoren sind aber auch 16 Bit Werte möglich. Problem ist dann halt auf Win Seite dass man andere APIs braucht um an die Daten zu kommen. Als 3. Möglichkeit wäre ein Vendor HID Device zu nennen. Dann kann man die Daten formatieren wie man will. Zum Auslesen wird dann die HID API verwendet. In allen Fällen wird nter Win der gen. HID Treiber benutzt. Man muss also keinen eigenen Treiber schreiben. Winusb wäre auch noch eine Alternative (ab XP) http://www.lvr.com/winusb.htm Dann kann man auf der Device Seite machen was man will Das ist allerdings nichts für Anfänger. Thomas
Vendor HID bedeutet dass deine Deskriptoren nicht als std Device erkannt werden. (keine Tastatur, Maus Joystick oder ähnliches) In der Konzequenz heist das im Gerädemanager tauscht nur ein HID Device auf. Ein HID Joystick würde beispielsweise unter Game Controller erscheinnen. Programmtechnisch bedeutet das, dass dei HID.DLL beziehungsweise die HID API für die Kommunikation benutzt wird. Thomas
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.