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:
...
Nach Boot Terminal öffnen und Programm mit Endlosschleife öffnen
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.
Typische Probleme: Du verwendest relative Pfade zu Dateien und die sind anders, wenn du das Programm von Hand startest.
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.
Was man aus den vier Zeilen jetzt schon sagen kann: veraltete Python-Version, zu wenig Funktionen, while- statt while-True-Schleife.
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:
Die dazugehörige test.desktop sieht so aus:
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.

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)
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
Alles was wir sind ist Sand im Wind Hoschi.