Tastatur Emulation Von PC zum Microkontroller

#2455142
Lesenswert?

Robert schrieb:
> Hallo,
>
> ich habe folgendes Problem und zwar bin ich auf der Suche nach einer
> Möglichkeit eine Tastatur auf dem PC zu simulieren und die Signale via
> USB an einen Microkontroller zu leiten.

Hä?
Was hat das eine (PC) mit dem anderen (µC) zu tun?

Was bedeutet: du sollst eine Tastatur auf dem PC 'simulieren'?

Und welche Signale sollen an den µC wie übertragen werden?
Gast #2455195
Lesenswert?

ok anscheinend war ich nicht präzise genug.

ich habe einen Mikrokontroller an einem JTAGmkII an einem PC 
angeschlossen. diesen PC kann ich jedoch nur über Remotedesktop 
ansteuern und den Microkontroller nur über die am PC angeschlossene 
Webcam sehen. Nun brauch ich noch eine Möglichkeit mit Hilfe einer 
Tastatur den Microkontroller zu steuern.
Da ich aber an den Microkontroller nicht drankomme brauch ich eine 
Tastatur emulation auf dem Rechner, welche die Tastatur Signale an den 
Microkontroller weiterleitet.
Dabei soll sich die Emulation genausoverhalten die eine echte Tastatur.
Sprich wenn der Microkontroller vormir stehen würde, würd ich meine 
Tastatur anschliessen da das aber nicht geht brache ich ein Workaround.

Viele Grüße
Robert
Gast #2632892
Lesenswert?

Hallo zusammen,

Ich greife dieses Thema noch einmal auf, da ich ein ähnliches Problem 
lösen möchte:
Ich will im Grunde eine PS2 Tastatur selbst bauen. D.h. ein 
Mikrocontroller soll an einen PS2 Anschluss angeschlossen werden und 
sich so verhalten, wie eine Tastatur.

Bei meiner Recherche lese ich immer wieder "sowas gab es schon oft", 
allerdings finde ich keinen brauchbaren Ansatz. Hat vielleicht noch 
Jemand so etwas zur Hand?

Es gibt ja z.B. diesen "Quick Bios Recover" Stecker, der sicherlich 
alles nötige an Software beinhaltet. Allerdings finde ich nirgends 
Sourcecode und auf Mails scheint er nicht mehr zu reagieren.


Viele Grüße,
David
Gast #2632990
Lesenswert?

Sorry, ich glaube das ist nicht ganz das Richtige.

Der Mikrocontroller soll die Eingaben machen, d.h. es wird keine 
Tastatur in dem Sinne geben, sondern eine Art Emulation.

Ich habe einen MC mit 2 USARTs. der 1. ist über USB an meinen PC 
angeschlossen. Der MC initialisiert den PS2 Port, als wenn er eine 
normale PS2 Tastatur wäre. Über den PC kann ich dann dem MC sagen, 
welche Eingaben er machen soll. Der MC soll dann aus meinen Befehlen ein 
PS2 Signal erzeugen.
Gast #2633224
Lesenswert?

@Andreas,
Ok, also ich habe bereits darüber nachgedacht, den Code selber zu 
schreiben. Nur ist das natürlich eine Menge Arbeit. Da ich gelesen habe, 
sowas hätte es schon öfter gegeben, möchte ich die Arbeit lieber 
vermeiden.

@Chris,
So auf Anhieb kann ich nicht genau feststellen, was dieser Code macht. 
Mir scheint es, als wenn das immer nur eine Art Signalwandlung wäre, ich 
also immer eine in Hardware vorhandene Tastatur brauche.

Ich habe mir das so gedacht:
Das System hat 2 PCs und einen Mikrocontroller.

PC1 ist per USB mit dem Mikrocontroller verbunden. Der Mikrocontroller 
ist per PS/2 mit PC2 verbunden.
Ich möchte nun an PC1 (auch ohne Tastatur) mit einer Software dem 
Mikrocontroller sagen, dass ich z.B. die Taste 'a' drücke. Dann soll der 
Mikrocontroller dem PC2 über den PS/2 Port genau das weiß machen.
Der MC ist also eine virtuelle Tastatur, die ihre Befehle nicht durch 
Eintippen mit den Fingern bekommt, sondern durch Befehle über den 
eingehenden USB-Port.

Dieser Mikrocontroller macht im übrigen noch andere Dinge, ist also 
nicht ausschließlich für die Tastaturemulation zuständig. Aber das nur 
als Nebeninfo.
Gast #2633300
Lesenswert?

> So auf Anhieb kann ich nicht genau feststellen, was dieser Code macht.
Der letzte Code gibt den 1.2kbps rs232 input als Tastatur aus,
;   Hardware:
;  RA0  T1OUT of MAX232
;  RB0  Pin 2 of DIN Connector
;  RB1  Pin 1 of DIN Connector
RA0 ist RS232 input, RB0 + RB1 ist output mit externen 4Kohm pull-up.
> Mir scheint es, als wenn das immer nur eine Art Signalwandlung wäre, ich
> also immer eine in Hardware vorhandene Tastatur brauche.
Ja, ist signalwandlung, und zwar von rs232 (1.2Kbit) auf ps2 
Tastaturemulation. Und genau das. Sprich es wird nichts von PS2 gelesen.
Wenn dein uC die Tastatur initialisiert, und auf einen Acknowledge 
wartet,

Er ist leicht anzupassen, kann dir dabei behilflich sein.

> Dieser Mikrocontroller macht im übrigen noch andere Dinge, ist also
> nicht ausschließlich für die Tastaturemulation zuständig. Aber das nur
> als Nebeninfo.
Welcher uC sollte das sein ? kann aber auch ein anderer uC sein, welcher
die Tastatureingaben als rs232 ausgibt und ein dedizierter uC wandelt
das um. Nun die Frage, kannst du pic programmieren, willst du pic 
einsetzen, was für ein uC soll es werden.

Was der Code nicht macht ist das lesen von der PS2 Schnittstelle und
das Antworten darauf. Wenn dein uC darauf wartet, musst du das manuell
Senden.

Beispiel was der Host senden kann:
ED    Set status LED's - This command can be used to turn on and off the 
Num Lock, Caps Lock & Scroll Lock LED's. After sending ED, keyboard will 
reply with ACK (FA) and wait for another byte which determines their 
status. Bit 0 controls the Scroll Lock, bit 1 the Num Lock and bit 2 the 
Caps lock. Bits 3 to 7 are ignored.
EE   Echo - upon sending an echo command to the keyboard, the keyboard 
should reply with an echo (EE).
F0   Set scan code set. Upon sending F0, keyboard will reply with ACK 
(FA) and wait for another byte, 01-03 which determines the scan code 
used. Sending 00 as the second byte will return the scan code set 
currently in use.
F3   Set typematic repeat rate. Keyboard will acknowledge command with 
FA and wait for a second byte, which determines the typematic repeat 
rate.
F4   Keyboard enable - clears the keyboard's output buffer, enables 
keyboard scanning and returns an acknowledgment.
F5   Keyboard disable - resets the keyboard, disables keyboard scanning 
and returns an acknowledgment.
FE   Resend - upon receipt of the re-send command, the keyboard will 
re-transmit the last byte sent.
FF   Reset - resets the keyboard.

und was das Keyboard zurücksendet bzw senden kann:
FA    Acknowledge
AA   Power on self test passed (BAT completed)
EE   See echo command (host commands)
FE   Resend - upon receipt of the resend command the host should 
re-transmit the last byte sent.
00   Error or buffer overflow
FF   Error or buffer overflow
Gast #2633337
Lesenswert?

Vielen Dank für Deine Unterstützung, Chris.


Also der uC müsste auch von PS/2 lesen, da er für den PC2 eine ganz 
normale Tastatur sein soll.

Das Board ist bereits fertig und mit einem ATmega644P bestückt. Ich habe 
nun noch vom 2. USART RXD und TXD auf Pins gelegt. Da kommt dann später 
einfach ein PS/2 Stecker mit Kabel drin. Leider ist beim Layouten der 
XCK Pin für etwas anderes benutzt worden, was vermutlich ein Problem 
ergibt, da der uC als "Tastatur" die Clock erzeugen muss. Aber das ist 
momentan nicht das Wichtigste.
Ich kann uC in C programmieren, bin aber kein Profi. Assembler ist z.B. 
nicht mein Ding.
Gast #2633377
Lesenswert?

> Also der uC müsste auch von PS/2 lesen, da er für den PC2 eine ganz
> normale Tastatur sein soll.
Wenn der uC nicht wartet, dann geht das auch ohne, ansonsten häng 
einfach
eine normale Tastatur dran und gut is. Dann kannst du auch die Leds
als Debugging Output benutzen, wenn es dir darauf ankommt.
Du ersparst dir da einiges an Aufwand.

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