Seite 1 von 1

Nach Boot Terminal öffnen und Programm mit Endlosschleife öffnen

Verfasst: Sonntag 16. August 2020, 20:44
von mxg
Hallo.
Ich versuche seit einer Weile Folgendes zu erreichen:
Nach dem Booten des Raspberry Pi soll ein Terminal geöffnet werden und darin ein python programm gestartet werden. Dieses python Programm hat eine Endlosschleife, in der jedes Mal ein input erwartet wird.
Wenn ich das python Programm manuell in einem Terminal starte, dann funktioniert es prima. Es wartet immer auf einen input und wenn der input da ist, wird er verarbeitet und das Programm läuft weiter.

Nun habe ich genau das Gleiche wie in
https://forum-raspberrypi.de/forum/thre ... post271273
beschrieben gemacht und es öffnet sich nach dem Booten tatsächlich ein Terminal und wartet auf einen input. Aber sobald der input da ist, schließt sich das Terminal direkt. Das Programm wird also nicht vollständig ausgeführt bzw. es bricht ab anstatt dass es in einer Wiederholungsschleife ist.

Kann mir evtl. jemand helfen, es hinzukriegen, dass mein Terminal bleibt und das Programm weiter läuft?

Ich habe im folder /home/pi/.config/autostart/ eine .desktop Datei mit folgendem Inhalt:

[Desktop Entry]
Type=Application
Name=pythonprogramm
Comment=Einlesen Starten
Exec=lxterminal -e python /home/pi/Einlesen.py
Terminal=true

und Einlesen.py sieht in etwa so aus:

#!/usr/bin/python

import datetime
currenttime=0
while currenttime>=0:
...

Re: Nach Boot Terminal öffnen und Programm mit Endlosschleife öffnen

Verfasst: Sonntag 16. August 2020, 21:04
von sparrow
Es kommt zu einem Fehler. Da das Terminal aber nur geöffnet wird, um dein Programm zu starten, wird es zusammen mit dem Programm auch wieder geschlossen.
Typische Probleme: Du verwendest relative Pfade zu Dateien und die sind anders, wenn du das Programm von Hand startest.

Re: Nach Boot Terminal öffnen und Programm mit Endlosschleife öffnen

Verfasst: Sonntag 16. August 2020, 21:17
von Sirius3
Ohne das Programm zu sehen, kann man da jetzt wirklich wenig sagen. Wenn ein Programm dauerhaft laufen soll, dann muss es auch im Fehlerfall sinnvoll weiterarbeiten.
Was man aus den vier Zeilen jetzt schon sagen kann: veraltete Python-Version, zu wenig Funktionen, while- statt while-True-Schleife.

Re: Nach Boot Terminal öffnen und Programm mit Endlosschleife öffnen

Verfasst: Montag 17. August 2020, 22:01
von hyle
Hätte nicht gedacht, dass sich nach so langer Zeit jemand an meiner *.desktop-Datei orientiert. :)

Btw. "Terminal=true" würde ich im Nachhinein auf "Terminal=false" ändern, da es ja keines virtuellen Terminals bedarf.

Das hat aber nichts mit dem Problem zu tun, das liegt wie bereits geschrieben im Skript. Aus Interesse habe ich mal ein kleines Testskript (eingabe.py) erstellt:

Code: Alles auswählen

#!/usr/bin/python3

while True:
    eingabe = input("Eingabe: ")
    if eingabe in ["exit","aus","beenden"]:
        break
    else:
        print(eingabe)
Die dazugehörige test.desktop sieht so aus:

Code: Alles auswählen

[Desktop Entry]
Type=Application
Name=Eingabetest
Comment=Test
Exec=lxterminal -e /usr/bin/python3 /home/pi/skripte/eingabe.py
Terminal=false
Das ganze funktioniert wie es soll. Alle anderen Eingaben werden ausgegeben, außer bei Eingabe von "exit", "aus" oder "beenden". Dann wird die Schleife verlassen, das Skript läuft durch und der Terminal beendet sich.