Treiber für USB Gerät

#1751486
Lesenswert?

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 #1751914
Lesenswert?

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.
Gast #1751963
Lesenswert?

@ 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.
#1752699
Lesenswert?

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?
Gast #1752713
Lesenswert?

> ...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
Gast #1753106
Lesenswert?

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).
Gast #1757803
Lesenswert?

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
Gast #1758790
Lesenswert?

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

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