PIC-USB Keyboard emulieren ?

Gast #1712287
Lesenswert?
• ▲
▼
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
Gast #1712484
Lesenswert?
• ▲
▼
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.
Gast #1714120
Lesenswert?
• ▲
▼
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
Gast #1714938
Lesenswert?
• ▲
▼
>>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.
Gast #1717052
Lesenswert?
• ▲
▼
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.