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.
Über Vorschlge zur Lösung wäre ich sehr froh.
mit freundlichen Grüßen
Robert
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?
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
Nimm nen zweiten Mikrocontroller, der eine PS/2 Tastatur emuliert und
schick dem, etwa über die serielle Schnittstelle, vom PC Befehle, welche
Tasten gedrückt oder losgelassen werden sollen.
Direkt vom PC aus ist das kaum machbar.
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
ttl usb converter (usb converter ohne max232) bekommt man günstig,
wenn rs232 vorhanden, genügen zwei Widerstände,
http://www.strippenstrolch.de/grafiken/picaxe28-seriell.gif
ansonsten usbnub (€17,40) wenn du keine Möglichkeit hast Pic zu
programmieren, und asm Lib in Jal einbinden, beim usb->rs232 Beispiel.
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.
Auf http://www.computer-engineering.org/ps2protocol/ gibts eine relativ
gute Beschreibung des PS/2 Protokolls und genauere Beschreibungen der
Maus und Tastatur Kommandos, die übertragen werden.
Ja, die Libs haben auch device funktionalität, ansonsten, z.B.
http://jpbachy.free.fr/Keyboard_Caroline_asm.htm
Läuft ab 8 pin pic PIC12F629/675 als Beispiel. Adresse der Ram Variablen
einfach von 20 anstelle von 10 Starten. Man kann dasselbe aber auch,
wie gesagt, mit usb machen. Sag was du machen willst, wenn Pic, dann
ändere ich dir die notwendigen Zeilen.
@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.
> 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
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.
> 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.