[gelöst] Windows Serial I/O mit zwei Applikationen

Hallo,
ich arbeite gerade an einer Kombination von zwei Programmen. Das eine in Lua (ich bin leider auf diese Sprache limitiert), das ander in Python.
Das Lua Program kann keine 'while true' ausführen, da es lediglich als "Addon" für ein anderes Program geschrieben ist und dieses sich sonst aufhängt. Allerdings akzepiert das Program Funktionsaufrufe durch Shortcuts. (Die 'while true' bräuchte ich um vom COM Port zu lesen, dazu gleich mehr.)
Zu eigentlichen Problem: Das Python Program ließt von einem COM Port und wandelt die Daten sozusagen in Tastenkombinationen um, die im anderen Program zu Funktionen gemappt sind. Das funktioniert super! Allerdings muss das Lua "Addon" die Möglichkeit haben Daten auf dem COM Port zu schreiben, doch bekomme ich einen Error (da die Python Anwendung den Port ja bereits benutzt).
Gibt es in Windows eine Möglicheit, dass zwei Programme (das eine read-only, das andere write-only) auf denselben COM Port gleichzeitig zugreifen? Eigentlich sollte es ja zu keinen Konflikten kommen, da das eine ja nur schreibt und das andere nur ließt.
Klar könnte das Python Program erweitert werden, um auch das Schreiben zu übernehmen, allerdings bräuchte ich dann noch eine Möglichkeit die Daten aus dem Lua Program in die Python Anwendung zu bekommen.
 
Zuletzt bearbeitet:
Das wird so nicht gehen.
Entweder du machst den Port in deiner Python App "frei", oder du du brauchst eine Middleware für Portsharing (zB: Serial Port Splitter - RS232 Splitter - COM port Splitter).
Was hängt denn eigentlich an dem Port?

Wenn das für dich nicht möglich ist, dann könntest du dir eine Art State-Machine zusammenfummeln. Diese Maschine ist über die Nutzung des Ports informiert und beide Programme könnten diese Maschine abfragen und ihre Nutzung "anmelden" - sozusagen ein schwarzes Brett für Portnutzer.
 
Vielen Dank Chromatin für deine Antwort.
Ich habe mich nun dazu entschlossen, dem Python Program die alleinige Kontrolle über den Port zu überlassen und sende nun die Daten vom Lua Script zum Python Script, welches sie schließlich auf den COM Port schreibt.
Nur ist dabei ein weiteres Problem aufgetreten. Meine gesammte Anwendung wird langsam... Ich konnte das Problem auf das "serial.write(tx.encode()) " des Python Scripts zurückführen. Wenn ich diese Zeile auskommentiere und statdessen eine Konsolenausgabe verwende, läuft alles flüssig.
Wie beschleunige ich diesen Teil des Programs?
Vielleicht hiflt euch die Information, dass es sich bei dem Gegenstück um einen Arduino mit ein paar Inputs und einem Lcd Screen handelt, auf den die Daten, die empfangen werden geschrieben werden.
Schonmal Danke für eure Ideen.
 
Hallo,
ich habe in der Eile ganz vergessen auf dem Arduino den Serial Timeout zu setzen.
Für alle, die ein ähnliches Problem haben und sich wundern, warum die Verbindung so langsam ist: Serial.setTimeout(5) sollte es lösen. Falls Fehler auftreten wählt man die Zahl einfach etwas höher.
 
Zurück
Oben