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
Soll das heisen, dass der Mikrocontroller USB-Host ist und der PC als USB HID Tastatur agieren soll???
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
Robert schrieb: > ok anscheinend war ich nicht präzise genug. JA! Wo ist die Tastatur angeschlossen die später emuliert werden soll?
die Tastatur ist über eine PS/2 adapter platine diekt mit den Ports des Mikrokontrollers verbunden
Na das ist nicht ganz das was ich mir vorgestellt habe
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.
Ich werde mich demnächst mal an der Programmierung versuchen. Falls es Probleme gibt, melde ich mich nochmal ;). Viele Grüße
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.