Python, Variablen von "außerhalb" ändern/setzen

Zeiss

BIOS-Overclocker(in)
Hallo zusammen,

ich habe ein kleines Programm in Python geschrieben, was mir über CAN Botschaften verschickt.

Nun die Frage, wie kann ich die Werte, die im Programm verarbeitet werden, während der Laufzeit verändern? Klar, ich kann das Programm stoppen, Wert setzen und dann neustarten, aber das ist nicht das, was ich brauche.

Danke schon mal :)
 
Zunächst solltest du genau definieren, was du unter „von außerhalb“ verstehst. Wenn es dir lediglich darum geht, Eingaben über die Konsole zu erhalten, kannst du dafür in Python die Funktion input() verwenden. Alternativ lassen sich Werte auch aus einer Datei (über File I/O) oder von einem Webserver (über Netzwerk I/O) einlesen. Natürlich ist es ebenso möglich, entsprechende Daten direkt vom CAN-Bus zu empfangen, sofern dein Skript darauf ausgelegt ist, solche Nachrichten zu verarbeiten.

Solltest du dein Programm in einer Debug-Umgebung (z. B. pdb) ausführen, hast du außerdem die Möglichkeit, Variablen interaktiv während der Laufzeit anzupassen. Die beste Herangehensweise hängt letztlich davon ab, aus welcher Quelle deine Werte stammen und wie du sie in dein Programm integrieren möchtest.
 
Das Programm ist eine Art Gateway. Ich habe jetzt einfach ein Socket implementiert und dahinter ein JSON-Parser. Das Gateway nimmt die JSON Daten (CAN ID, Signalname und Wert) und setzt den Wert ins Signal entsprechender Botschaft, die dann rausgeschickt wird.

Der Weg über eine Datei ist für diesen Use Case maximal hässlich, finde ich.
 
Zurück