Text über seriellen Port in Tastatureingabe umwandeln. Arduino

devrim

Aktiver NGBler
Registriert
15 Juli 2013
Beiträge
1.072
Ort
/dev/null
Liebe Kollegen, ich habe auf einen Arduino Nano einen Sketch aufgespielt, der mir bei setzen eines Eingangs ein Wort über die serielle Schnittstelle schickt.
Ich brauche ein Programm, welches die serielle Schnittstelle abhört und dann dieses Wort gesendet wird, einen Tastendruck simuliert. "Sendkeys"

Und jetzt worum es eigentlich geht.

Ich habe auf der Arbeit auf dem Rechner ein Microsoft Programm, welches Desktops heisst.
Dieser erstellt mir mir 4 virtuelle Desktops. Zwischen diesen kann ich mittels der Alt Taste und 1-4 umschalten.
Auf dem ersten Desktop habe ich das was für die Arbeit ist, und mit Alt 2 schalte ich dann in den zweiten Desktop und mache was ich will.
Natürlich soll das keiner sehen was ich da mache und ich schalte immer manuell mit Alt 1 immer auf den ersten Desktop.

Jetzt werde ich mir einen Türkontakt dransetzen und diesen mit dem Arduino benutzen. Jedesmal wenn die Tür aufgeht wird der String Alt1 über die serielle Schnittstelle gesendet.
Das noch zu programmiere Programm empfängt diesen String und löst den Tastendruck Alt 1 aus.

Ich stelle mir das so vor in etwa

If serialread == alt1 then sendkeys "alt+1"

Ich wollte jetzt keine neue Programmiersprache lerne oder Grundlagenforschung betreiben, falls es für andere einen Minutenarbeit ist.
Würde mich auf jedenfall freuen.
 
Klingt sehr umständlich. Kann man denn in dem Programm für die virtuellen Desktops auch andere Tastenkombinationen einstellen? Alternantiv käme auch evtl. sowas wie Autohotkey ($Taste drückt Alt-1) in Frage, sofern Du auf dem Gerät Software installieren kannst/darfst.

Dann käme mir nämlich eine deutlich einfachere mechanische Lösung in den Sinn. Du bräuchtest dann nur eine alte Tastatur und müsstest diese ähnlich anschließen wie hier:
https://ngb.to/threads/10695-Tip-C64-Joystick-am-PC-als-quot-Tastatur-quot

Matrix nachverfolgen bis Du z. B. die Pause-Taste auf der Elektronik kennst. Türkontakt basteln, der kurz die Pause-Taste drückt. Pause-Taste in der Software für den anderen Desktop aktivieren.
 
  • Thread Starter Thread Starter
  • #4
Ich habe durch googeln ein Programm gefunden was sich Processing nennt. Dort gab es ein Serial Port Beispiel. Dieses habe ich umgewandelt und es funktioniert wie ich es haben will.

[src=cpp]import processing.serial.*;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.AWTException;

Serial myPort;
int val;
Robot robot;

void setup()
{
size(200, 200);
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
exit();
}

}

void draw()
{
if ( myPort.available() > 0) {
val = myPort.read();
}
background(255);
if (val == 0) {
fill(0);
}
else {
fill(204);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_1);

robot.keyRelease(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_1);

}
rect(50, 50, 100, 100);
}[/src]


Nebenbei bin ich in der Instandhaltung.
 
  • Thread Starter Thread Starter
  • #6
Geht eigentlich mehr darum, das die wie bekloppte Hunde in das Büro andauernd reinknallen. Man muss ja den Leuten keine Vorlage geben.
Nachher heisst es noch wir gucken den ganzen Tag Fussball dort.

Das nächste was ich in den Code mache ist, das er auch die Lautsprecher sofort abstellt. Bringt mir ja nichts, wenn das Bild umgeschaltet wird und Marcel Reis quatscht noch im Hintergrund. :D
 
Zurück
Oben