Windows 10 Serielle Schnittstelle auslesen und weiter verwenden

OP #7511191
Lesenswert?

Hallo ihr Alle,

Ich möchte mir gerne für meinen Windows 10 PC ein Fußpedal bauen, welches mir Tastatureingaben simulieren soll. Hintergrund ist, dass ich für eine Software Tastaturkürzel benutze, diese aber gerne auch per Fuß, als nur per Hand eingeben möchte.

Meine Idee war, dass ich einfach mit einem Arudino per Knopfdruck (Pedal) einen Tastaturanschlag simuliere (Library "Keyboard"). Da ich aber öfters ändern will, welches Zeichen ich mit dem Pedal „drücke“, dachte ich, dass ich auch per Arduino die Pedalnummer (da ich mehrere Pedale benutze) an den SerialPort des PCs senden kann und dann per PC-Software den jeweiligen Tastaturanschlag simuliere, den ich einfacher ändern kann.

Meine Frage ist daher, ob das so geht bzw. mit welcher Software ich das machen könnte (Java…?)?

Ich hoffe ihr versteht was ich machen will! (Sonst bitte ich um Rückfragen)

Gruß, Philipp

#7511250
Lesenswert?

Ich hätte gesagt man nimmt einen Arduino der nativ USB/Keyboard spricht und lässt den pro Pedal Control/Alt/Shift-Fx sprechen (oder A,B,C...), eben Keys die kein Programm nutzt, und dann haut man da ein Autohotkey-Skript drauf. Das funktioniert dann auf mehr Hardware weil man USB sicher öfter findet als RS232, und über AutoHotKey ist die Software fertig, flexibel und leicht änderbar.

(Firma: 1984now) #7511263
Lesenswert?

Gustl B. schrieb:

Klar geht das mit Java. Geht aber auch mit so ziemlich jeder anderen Sprache.

Grundsätzlich erstmal ja. Würde letztlich alles SendInput aus winuser.h verwenden, also eine Funktion aus dem Win32-API.

Aber: Die Möglichkeiten dieser Funktion wurden aus Sicherheitsgründen beschränkt. Früher(tm) konnte man mittels der Vorgänger-Funktionen keyb_event bzw. mouse_event wirklich an jedes Fenster Input senden. Genaueres über die Einschränkungen von SendInput lässt sich über die online-Doku der Funktion ermitteln.

Für unbeschränkte Möglichkeiten muß man heute also eine "wirkliche" Tastatur verwenden.

Dazu kommt (allerdings unabhängig davon, ob "echter" Input oder simulierter) das Problem der Fokus-Steuerung. Es ist garnicht so einfach, zuverlässig dafür zu sorgen, dass die Tastenanschläge genau das Fenster erreichen, in dem man sie haben will.

#7511295
Lesenswert?

Rainer W. schrieb:

Ob S. schrieb:

Für unbeschränkte Möglichkeiten muß man heute also eine "wirkliche" Tastatur verwenden.

Deshalb eben den Arduino mit USB, der eine "wirkliche" Tastatur emuliert, z.B. einen Arduino Micro.

Aber eben:

Philjamin schrieb:

Da ich aber öfters ändern will, welches Zeichen ich mit dem Pedal „drücke“

Deshalb die Idee

Jens M. schrieb:

und dann haut man da ein Autohotkey-Skript drauf.

Gruss Chregu

(Firma: Privat) #7511312
Lesenswert?

Vielleicht könnte man sich auch die Funktionsweise /API einer Maus zunutze machen. Wären dann aber nur 2 Pedale oder höchstens 3, wenn man das Mausrad bzw. mittlere Taste noch dazu rechnet. Da bräuchte man ja nur eine Mechanik für die Pedale, die dann die Maustasten bedient. Per SendKey o. ä. an das entsprechende Fenster geht es dann weiter.

Wäre dann auch softwaremäßig einfacher.

War jetzt nur mal so eine Idee von mir.

Gast #7511314
Lesenswert?

Link zur Java Library: https://github.com/rxtx/rxtx http://fizzed.com/oss/rxtx-for-java http://rxtx.qbang.org/wiki/index.php/Main_Page

(Wie gesagt, nicht mehr empfehlenswert)

Wenn du es wirklich seriell machen willst, kannst du von meinem "I/O Modul" Projekt abgucken: http://stefanfrings.de/serial_io/index.html Ich habe auf der Seite auch Varianten mit Bluetooth, USB, Ethernet und WLAN. Alle mit dem Kommunikations-Protokoll.

#7511453
Lesenswert?

Philjamin schrieb:

Hallo ihr Alle,

Ich möchte mir gerne für meinen Windows 10 PC ein Fußpedal bauen, welches mir Tastatureingaben simulieren soll. Hintergrund ist, dass ich für eine Software Tastaturkürzel benutze, diese aber gerne auch per Fuß, als nur per Hand eingeben möchte.

Nimm das hier:

https://www.codemercs.com/de/starterkits/kw28eval

Da musst Du nichts mehr programmieren, das ist alles schon fertig. Du musst das Board nur noch verdrahten, d.h. Deine Taster und das USB-Kabel bzw eine USB-B Buchse anschließen. Die Software zum Konfigurieren der Tasten gibts da auch zum Download.

fchk

#7513805
Lesenswert?

Stefan F. schrieb:

Ja schon, aber Java unterstützt keine seriellen Ports. Dazu muss man eine C Bibliothek einbinden, die nach meinem Kenntnisstand schon "ewig" nicht mehr gepflegt wird. Was nicht heissen soll, dass sie nicht funktioniert.

Moin, ich verwende schon mehrere Jahre jssc (https://github.com/java-native/jssc/releases/tag/v2.9.5). Die aktuelle Version ist vom August. Das funktioniert unter OpenJDK als auch mit der kommerziellen Java-Version. Der AG stellt nur Windows-10 Pro LTSC zur Verfügung. Neun serielle Schnittstellen via USB-Adapter einzulesen ist überhaupt kein Thema.

Gruß Holger

#7513949
Lesenswert?

Hallo, also Java ist in der Tat suboptimal, da es durch die Vorgabe auf jeder Plattform zu laufen erstmal keine Funktionalität für hardwarenahe Programmierung bietet.

Wie wäre es andersrum ? So ein Arduino Leonardo emuliert eigentlich immer auch einen RS232 Port, damit Du an seinen Bootloader kommst. Da kann man auch Befehle entgegen nehmen, welche Taste bei einer bestimmten Fußbewegung gesendet werden soll. Die Einstellungen solltest Du halt im Arduino so ablegen, dass sie auch ohne Strom erhalten bleiben.

Bleiben jetzt noch 2 Möglichkeiten : a) Dein Arduino bietet zur Konfiguration eine Kommandozeile, auf die Du z.B. per Putty zugreifst. b) Du erstellst eine eigene Software für PC zur Konfiguration, die ihre Einstellungen in Deinem Format und Protokoll über die serielle Schnittstelle dem Arduino mitteilt. Wobei ich mit Java nie wirklich warm geworden bin und die PC-Software mit MS-Visual-Studio in C# zusammen kloppen würde.

Schick wäre es auf jeden Fall, mehrere Profile auf einem Arduino zu haben, die man schnell mal umschalten kann. Eventuell per Taster und Leds oder Kodierschalter auswählbar, je nach freien Portpins.

#7513958
Lesenswert?

Flunder schrieb:

Du erstellst eine eigene Software für PC zur Konfiguration, die ihre Einstellungen in Deinem Format und Protokoll über die serielle Schnittstelle dem Arduino mitteilt.

Wat? Dann müsste man ja sogar zweimal PC-Software machen, plus noch die für den Arduino. Lies nochmal den OP, dann fällt dir auf das du eigentlich genau das vorschlägst was er fragt, nur komplizierter. Deine Lösung wäre geeignet, wenn man dann einen RS232-Keyboard-Wedge nutzen könnte/müsste, wie ihn viele Barcodescanner nutzen.

#7513970
Lesenswert?

Jens M. schrieb:

Dann müsste man ja sogar zweimal PC-Software machen, plus noch die für den Arduino.

Jetzt hast Du mich falsch verstanden. Bei b) gibt es eine Software auf dem PC zum Parametrieren. Dann gibt es natürlich noch die Software auf dem Arduino. Im Betrieb spielt der Arduino Tastatur, dazu braucht es keine weitere Software.

Ok, die Tastendrücke gehen an das Fenster, das momentan den Fokus hat, aber beim Spielen ist das ja eigentlich immer das Spiel im Vollbildmodus.

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