Hallo, Ich will mit meinem Arduino Tastaturanschläge machen Ich habe mit meinem Arduino ein Programm geschrieben, welches "15" in Hex, also ein F sendet wenn man einen Knopf drückt. Im serial monitor kommt dieses F an, nur was muss ich jetzt machen, dass zum Beispiel im Word dieses F geschrieben wird? Ich habe den Arduino Mega 2560 Gibt es eine Software für den PC, das die seriellen Daten vom USB in Tastaturanschläge verwandelt?
Also: - hex F ist nicht ASCII F. - und warum nicht den µController als USB HumanInterfaceDevice anbinden also als Keyboard und einfach los tippern lassen. Wenn nicht noch ne anderere Anforderung kommt würde ich es so machen
Peter P. schrieb: > - und warum nicht den µController als USB HumanInterfaceDevice anbinden > also als Keyboard und einfach los tippern lassen. Weil es ein Arduino ist und es daher diese Möglichkeit gar nicht gibt? Man könnte aus zwei I/O Pins eine PS/2 Schnittstelle machen. Aber Scancodes zu senden ist nicht wirklich lustig, die Ings bei IBM müssen damals ganz schlechtes Gras geraucht haben als die sich das ausgedacht haben. Edit: das ist an der Frage vorbei okay, es wird eine Windows-Software gesucht. Aber das hier ist das Mikrocontroller-Forum...
:
Bearbeitet durch User
Wenn ich bei Google 'serial to keyboard' eingebe, dann bekomme ich 27 Millionen Ergebnisse. Schon die ersten 3 sahen nach dem aus, was du möchstest.
Rudolph R. schrieb: > Weil es ein Arduino ist und es daher diese Möglichkeit gar nicht gibt? Falsch! Fertiges Beispiel: https://www.arduino.cc/en/Reference/MouseKeyboard
Die Arduino Leonardo und Micro können das von Haus aus mit dem Atmega32u4. Alle anderen Arduinos müssen mit USB HID verdrahtet und programmiert werden.. das ist dann nicht einfach mal die IDE öffnen und Library wählen, die Anschlüsse benötigen auch einige Bauteile. Stichwort VUSB Keyboard.
Das MouseKeyboard von der offiziellen Arduino Website hab ich natürlich schon probiert aber das funktioniert nur mit dem Arduino Leonardo, weil der so ne Keyboard emulation hat. Was kann denn da so schwierig sein, ich bekomme ein "F" beim USB herein, das muss ja nur mit ner Software konvertiert werden...
>Was kann denn da so schwierig sein, ...
Dann mach doch.
Rudolph R. schrieb: > Weil es ein Arduino ist und es daher diese Möglichkeit gar nicht gibt? Wer hat dir diesen Bären aufgebunden? In der Arduino IDE finden sich sogar lauffähige Beispiele für Grundfunktionen unter Menü "Datei" - "Beispiel" - "USB" - "Keyboard"
Melvyn S. schrieb: > Das MouseKeyboard von der offiziellen Arduino Website hab ich natürlich > schon probiert aber das funktioniert nur mit dem Arduino Leonardo Der Micro kann's, der Pro Micro kann's ... Welchen Arduino hast du denn?
STK500-Besitzer schrieb: >> Weil es ein Arduino ist und es daher diese Möglichkeit gar nicht gibt? > > Falsch! Meine Güte, es ist ein Arduino Mega 2560, der kann das nicht direkt. Und ein Uno auch nicht. Dazu müsste man schon den USB-Seriell Umsetzer vor dem Controller umprogrammieren - also wenn da ein Mega16U4 drauf ist. Unmöglich ist auch das nicht.
Melvyn S. schrieb: > Das MouseKeyboard von der offiziellen Arduino Website hab ich natürlich > schon probiert aber das funktioniert nur mit dem Arduino Leonardo, weil > der so ne Keyboard emulation hat. > Was kann denn da so schwierig sein, ich bekomme ein "F" beim USB herein, > das muss ja nur mit ner Software konvertiert werden... Nun, das schwierige ist, dass so ein PC mit einem Betriebssystem eine "Organisationsform" ist. D.h. in Bezug auf Dein Problem, dass es gewisse, fest umschriebene (d.h. definierte) Wege gibt, Daten über die Schnittstelle in den PC zu bringen und dort zu verarbeiten. Das Problem ist möglicherweise, dass Du von dieser Struktur sehr wenig weisst. Deswegen nimmst Du, wiederum möglicherweise, an, dass es sich nur darum handelt ein 'F' von irgend woher nach irgend wohin zu transportieren. Zwar ist das physisch durchaus korrekt. Aber dennoch geht das, um im Gesamtsystem korrekt zu sein, d.h. die Wirkung zu haben, die Du wünschst, nur auf ganz bestimmte Arten und Weisen. Du hast zunächst einmal folgenden Bedarf an Wissen: 1. Kodierung, Schreibweise bzw. verbale Beschreibung von Literalen "Der Buchstabe 'F'" wird z.B. in C als 'F' beschrieben, wobei das in Hochkommata eingeschlossene ein ASCII-Zeichen ist. Der ASCII-Zeichensatz stellt eine Zuordnung zwischen Zahlen und Zeichen her. Insofern als Zahlen gemeint sind, können diese als "Dezimalzahl 70" oder als "Hexadezimalzahl 46" verbal beschrieben werden. In C könnte man auch "70" oder "0x46" schreiben. Was Du also willst ist, vermutlich, dass ASCII-Zeichen 'F', 0x46, 70 an Word weitergeben. 2. USB-Gerätetypen, serielle Schnittstelle, Tastatur, Treiber An einen PC können verschiedene Peripheriegeräte angeschlossen werden. Das ist Dir soweit klar. Ein Betriebssystem spezifiziert gewisse Regeln, auf welche Weise diese Geräte gesteuert und wie von ihnen Daten empfangen werden. Konkret heisst das, wie und in welcher Reihenfolge welche I/O-Pins gesetzt werden oder eingelesen. Ausserdem natürlich zu welchem Zeitpunkt im Ablauf, die von einem I/O-Port gelesenen Daten beispielsweise als Zeichen von einer Tastatur oder als Byte von der Festplatte und damit als Teil einer Datei interpretiert werden und wohin das weiterzuleiten ist. Diese Beschreibung nennt man "Protokoll", die Software dazu "Treiber"; die Verbindung zwischen "Treiber" und Betriebssystem ist eine "Softwareschnittstelle", auch durch eine "Aufrufkonvention", eine Einsprungadresse und einige weitere Details beschrieben. Das gilt für Festplatten, wie für Tastaturen und auch serielle Schnittstellen. Du hast hier den Spezialfall, dass ein USB-Gerät eine serielle Schnittstelle nachbildet, die mittels Treiber dem Betriebssystem gegenüber als serielle Schnittstelle dargestellt wird. 3, Benutzerinteraktion im Betriebssystem In der Regel ist vorgesehen, dass der Benutzer mittels Maus und Tastatur mit dem PC interagiert. Das Betriebssystem stellt diese Daten einer Anwendung zur Verfügung. Dafür gibt es einen Satz von Funktionen: die Windows-API. Die Funktion zum Einlesen von Zeichen von der Tastatur ist dazu definiert, benannt und über einige Zwischenschritte wird ein bestimmtes Stück Software ausgeführt, dass prüft ob ein Zeichen von der Tastatur vorliegt, oder, im Falle von Windows, die Anwendung wird angestossen, falls ein Zeichen vorliegt. Wesentlich ist, das die Anwendung definiert, auf welche Weisen, über welche Wege (Tastatur etc.) sie Eingaben akzeptiert. An sich ist Word nicht darauf eingerichtet, von der seriellen Schnittstelle Daten zu empfangen und diese als Eingabe zu interpretieren, die den Text ausmacht. Diese Wege lassen sich, mit guter Kenntnis der Zusammenhänge auch modifizieren oder umgehen. Dazu gibt es entweder fertige Software oder man muss sie selber schreiben. Es gab z.B., für eine alte Excel-Version einen Zusatz, der Daten von der seriellen Schnittstelle empfängt. Das ist ein Satz von Makros, der Zellinhalte ändert. Ich weiss nicht mehr genau. Mag sein, es war eine DLL die sich als Paket zu Excel dazu installieren liess. Ich weiss nicht ob es das auch für Word gibt, aber es ist anzunehmen. Da ich nicht weiss, welches Betriebssystem oder welches Word Du verwendest, kann weder ich noch jemand anders einen konkreten Hinweis dazu geben. Suche doch einfach mal im Internet. Ein anderer Weg (ein Umweg) wäre, die Daten von der Emulation der seriellen Schnittstelle in eine Text-Datei zu kopieren. Das Kommando dazu sieht etwa so aus: "copy con Datei.txt" Dazu solltest Du aber nochmal genau in der Hilfe zum Copy-Kommando nachlesen. Ein dritter Weg wäre, die schon erwähnte Möglichkeit, ein USB-HID-Device auf dem uC laufen zu lassen. Auch dazu gibt es fertige Software. Evtl. brauchst Du einen anderen uC oder musst das Arduino-Paradigma verlassen. Was ich schrieb sollte Dir aber zumindest erst einmal Anregungen geben, auf welchen Gebieten Du Dir, mit welchen Stichworten, Wissen aneignen solltest.
Wie wäre es mit einem klitzekleinen Treiberlein/Dämon auf PC-Seite, geschrieben in ... z.B. 20 Zeilen Basic oder Delphi, um die seriellen Daten per DLL-Call als Tastendrücke erscheinen zu lassen? Beispiel: http://www.vbaccelerator.com/home/VB/Tips/SendKeys_using_the_API/article.asp
Rudolph R. schrieb: > Meine Güte, es ist ein Arduino Mega 2560, der kann das nicht direkt. > Und ein Uno auch nicht. > > Dazu müsste man schon den USB-Seriell Umsetzer vor dem Controller > umprogrammieren - also wenn da ein Mega16U4 drauf ist. > Unmöglich ist auch das nicht. Na klar können die das ohne Löten und Deinen Umbau Vorschlag.
:
Bearbeitet durch User
Philipp K. schrieb: > Na klar können die das.. Der Mega328 und der Mega2560 wahrscheinlich schon - aber als Arduino? Jemand der 0x0f für 'F' über die serielle schickt wird sicher nicht mit der direkten Programmierung der Controler überfordert sein.
Ein Arduino bleibt zu 100% ein AVR. z.B. http://blog.petrockblock.com/2012/05/19/usb-keyboard-with-arduino-and-v-usb-library-an-example/ Hier muss man dann nur noch das zeichen übergeben. EDIT: mit viel optimierung könnte das Programm sogar noch in einen Tiny85 passen.
:
Bearbeitet durch User
Philipp K. schrieb: > Ein Arduino bleibt zu 100% ein AVR. Jain, die loop() und die Abstraktion fressen Performance. Was ja auch für viele Anwendungen nicht so schlimm ist. Na okay, offenbar hat doch jemand einen Weg gefunden.
Rudolph R. schrieb: > Jain, die loop() und die Abstraktion fressen Performance. > Was ja auch für viele Anwendungen nicht so schlimm ist. > > Na okay, offenbar hat doch jemand einen Weg gefunden. Hält ja niemanden davon ab VUSB auch in der Arduino-IDE zu verwenden.. Merke: "Der" Arduino ist nur die Hardware, womit Du die programmierst ist egal.
Philipp K. schrieb: > Merke: "Der" Arduino ist nur die Hardware, womit Du die programmierst > ist egal. Ah, vorsichtig mit solchen Aussagen. Das ist sicher nicht falsch aber auch nicht korrekt, da Arduino nun einmal Hardware und Software ist, kann die Hardware alleine gemeint sein, muss aber nicht. Also pauschal zu behaupten, dass jeder das gleiche meint wenn er Arduino erwähnt, ist eher nicht korrekt. Ich bin davon ausgegangen, dass der TE Hardware+Software meint. Und aufgrund der Timing-Anforderungen von USB und dem was die Arduino Software so an Performance frisst bin ich davon ausgegangen, dass VUSB keine Option ist. Scheint aber doch zu funktionieren, auch gut. Ich fürchte nur, viel mehr als USB wird der Arduino dann nicht mehr machen. So blockierend umgesetzte Geschichten wie serielle Ausgabe, AD-Wandlungen oder LCD-Ausgabe dürften das sehr leicht unbrauchbar machen. Der Mega 2560 wäre dann leicht verschwendet an die Aufgabe.
Ein Dreizeiler in Visual Studio, der die Schnittstelle einliest und in den keyboardbuffer schreibt. Dann landen die Daten im yFocus adelnder Applikation wie WinWord. Oder fertiges Programm: ftp://support-datalogic.de/ADC/HHS/06.Verschiedenes/Windows_COM-Port_KBD _Umleitung-v1.3g.pdf
Rudolph R. schrieb: > Ah, vorsichtig mit solchen Aussagen. Dito.. Ziemlich viel Text für wenig Aussage und keine Antwort auf die Frage des TE.
Philipp K. schrieb: > Merke: "Der" Arduino ist nur die Hardware, womit Du die programmierst > ist egal. Was ist an der Hardware eines Arduino-Boards Arduino? Meinst du die Pin-Anordnung und -Nummerierung oder die LEDs? Den Bootloader kann mal wohl kaum als Hardware bezeichnen.
Habe Werner M. schrieb: > Was ist an der Hardware eines Arduino-Boards Arduino? Meinst du die > Pin-Anordnung und -Nummerierung oder die LEDs? > Den Bootloader kann mal wohl kaum als Hardware bezeichnen. Seit ihr heute alles Halb lesende Erbsenzähler? Hab ich nicht geschrieben..Arduino ist eine OpenSource Marke, die besteht nunmal Hauptsächlicherweise aus einer Sammlung Minimalistischer Developerboards mit Seriellem Bootloader die bis auf wenige Ausnahmen uneingeschränkte Funktion des belöteten AVRs bereitstellen. Wenn man noch keine Erfahrung hat kann man mit der Arduino IDE programmieren und die Sinngemäßen Pseudobezeichnungen beim Programmieren benutzen,auch jede andere Software verwenden, auch den Bootloader löschen oder sogar seine eigenen Projekte in die IDE einbetten. Es ging mir nur darum das hier der Arduino ab und zu hauptsächlicherweise nicht als AVR dargestellt wird oder Nachteile aus der Luft geholt werden wie "Das Projekt geht nicht mit nem Arduino", wobei ein Projekt nur zu groß sein kann weil der Bootloader nen KB zuviel belegt.
>Gibt es eine Software für den PC, das die seriellen Daten vom USB in >Tastaturanschläge verwandelt? Eventghost: http://www.eventghost.org/
Rudolph R. schrieb: > Man könnte aus zwei I/O Pins eine PS/2 Schnittstelle machen. > > Aber Scancodes zu senden ist nicht wirklich lustig, die Ings bei IBM > müssen damals ganz schlechtes Gras geraucht haben als die sich das > ausgedacht haben. Nö, die haben einfach vom Tastatur-MC 8051 den UART-Mode 0 genommen. Ich sehe auch kein Problem, mit 2 IOs des AVR das PS/2 Protokoll nachzubilden.
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.