www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC-USB Keyboard emulieren ?


Autor: Andeas9999 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_virtuema...

Gruß Ralf

Autor: Guido Körber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andeas9999 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.