Auf der Sprut-Seite war ich schon (und auf vielen anderen). Habe mir 2 Tage lang, zumindestens ansatzweise, die Grundlagen versucht anzueignen. Ist ja ziemlich kompliziert. Das Keyboard als HID anzumelden bietet sich an, ich frage mich jedoch, woran Windows erkennt, dass es sich bei dem Device/Interface um ein HID-Keyboard handelt, damit der Windows eigene Standardtreiber automatisch eingebunden wird. Bin dann auf die Idee gekommen, dass das der Treiberhersteller der USBHID.dll (Microsoft) wissen muß. Also bin ich auf die Suche gegangen und auf die Vendor ID von Microsoft gestossen: 0x045e für allgemeine Keyboards ist die Product ID: 0xfff8. Ich bin mir aber nicht sicher, ob das reicht, bzw., ob das überhaupt in den Device-Deskriptor gehört. Ich würde meinen, dass es in den Interface Deskriptor gehört, da man ja viele Interfaces in einem Device haben kann. Also, z.B. Tastatur und Maus etc.. Also müsste doch eigentlich für jedes Interface ein anderer Treiber installiert werden. So habe ich das bisher verstanden. Wie teilt man Windows mit, welchen Treiber es automatisch einbinden soll? Danke
Andeas9999 schrieb: > Ich würde meinen, dass es in den Interface > Deskriptor gehört, da man ja viele Interfaces in einem Device haben > kann. Genau, im Interface-Descriptor wird festgelegt, dass es sich um ein HID-Keyboard handelt. Mit der Vendor ID bzw. Product ID hat das nicht direkt was zu tun. Welcher Treiber verwendet wird, entscheidet das Betriebssystem anhand der Deskriptoren; um das muss man sich bei HID-Geräte nicht kümmern. Beim PIC18 bin ich übrigens mit JALv2 und der jallib recht schnell zu einem Ergebnis gekommen (RC5-Empfänger als HID-Keyboard: http://www.fundf.net/usbnub/#rc5hid). Ansonsten gibt es auch von Microchip C-Beispielcode.
Die VID/PID hat mit der Zuordnung als HID genau nichts zu tun. HID sind generell Composite Devices, definieren also im Device Descriptor Class und Protocol als 0, die Zuordnung geschieht auf Interface Ebene. Wem das zu kompliziert ist, der kann sich auch einen fertigen Tastatur-Chip holen: http://www.codemercs.com/index.php?id=38&L=0
Hallo, >HID sind generell Composite Devices das stimmt nicht. Composite Devices sind USB Geräte, die mehrere Funktionen in einem Gerät integrieren (z.B. Maus und virtuellen COM-Port). HID kann natürlich auch nur ein Gerät - z.B. Maus - sein. Aber - fertige Tastaturchips gibt es auch als Composite-Gerät. Z.B mit Maus, 2 Datenschnittstellen und Tastatur: http://www.rahand.eu/index.php?option=com_virtuemart&Itemid=5 Gruß Ralf
>>HID sind generell Composite Devices >das stimmt nicht. Composite Devices sind USB Geräte, die mehrere >Funktionen in einem Gerät integrieren Composite Devices sind solche die ihre Class nicht auf Device Level definieren und dadurch mehrere verschiedene Funktionen in einem Gerät vereinen können. Ob dann nur ein Interface oder mehrere vorhanden sind ist unerheblich.
Ist ja interessant, dass es sowas schon fertig zu kaufen gibt, aber ich wollte das schon mit C18 programmieren. Einerseits weil man dann flexibel alles machen kann was man möchte, andererseits wegen dem Preis, und ausserdem komme ich mir irgendwie etwas dümmlich vor USB nicht selbst programmieren zu können. Beispielprogramme gibt es ja genügend von Microchip. In dem Microchip USB-Framework für USB gibt es ein Tool zum Erstellen der Deskriptoren. Da kann man auch HID auswählen. Allerdings ist das etwas unflexibel, denn ich bräuchte letztlich 2 Interfaces, weil ich eine Tastatur einbauen möchte und eine Datenübermittlungsschnittstelle vom Host zum PIC. Am Anfang, zum Üben, reicht mir auch erstmal die Tastatur. Wie man die Deskriptoren erstellt ist mir ziemlich klar. Es gibt auch ein Tastatur-Beispielprogramm von Microchip, allerdings für einen anderen Chip. Ich verwende einen PIC 18F14K50 (wollte ich jedenfalls). Ist es ratsam sich ein spezielles Hardware-Entwicklungstool für USB zuzulegen, wenn ja, welches ? Danke
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.