... Das ist ein Programm / Skript mit GUI.
Ja. Im Beitrag #6 hat der TE geschrieben:
D. h. mit einer timer-unit und/oder den entsprechenden Abhängigkeiten in der service-unit wird man das Programm auch starten können, oder?
... Das ist ein Programm / Skript mit GUI.
Ja. Im Beitrag #6 hat der TE geschrieben:
D. h. mit einer timer-unit und/oder den entsprechenden Abhängigkeiten in der service-unit wird man das Programm auch starten können, oder?
Nur nicht beim Starten des Rasberrys.
Weil zu diesem Zeitpunkt, die Abhängigkeiten evtl. noch nicht erfüllt sind.
rpi444 Dazu müsste der RPi wissen auf welchem Display das Skript gestartet werden soll.
ja, aber das kann man ihm ja via service-unit mitteilen, z. B. mit:
Ist die *.desktop-Datei im Verzeichnis /home/pi/.config/autostart?
ja ich habe den autostart Ordner neu angelegt.
sagt er das Verzeichnis wurde nicht gefunden
Zugriff auf '/home/pi/.config/autostart/Autostart.desktop\u200b' nicht m\u00f6glich: Datei oder Verzeichnis nicht gefunden
chmod: Zugriff auf '\u200b' nicht m\u00f6glich: Datei oder Verzeichnis nicht gefunden
Habe ich bei der Erstellung des Autostart Ordners etwas falsch gemacht?
Welchen Editor, Terminal, Kommandozeile, etc. hast Du benutzt?
Welchen Editor, Terminal, Kommandozeile, etc. hast Du benutzt?
Das LXTerminal
Das LXTerminal
Und für die Datei "Autostart.desktop" hast Du welchen Editor benutzt?
Ja, weil der TO es als angemeldeter User im Terminal (irgendein X-Terminal) aus seiner Grafikoberfläche gestartet hat. Da funktioniert es natürlich einwandfrei.
Servus !
Achja, zu spät (und beim Editor dürfte Putty ohne UTF-8 im Spiel sein.)
Und für die Datei "Autostart.desktop" hast Du welchen Editor benutzt?
Einfach per Texteditor
Da funktioniert es natürlich einwandfrei.
Mit einer entsprechend konzipierten service-unit, funktioniert es genauso einwandfrei, schon sofort nach dem booten.
Einfach per Texteditor
Ja, und welcher Texteditor war das?
EDIT:
Die Zeile:
war die Ausgabe von was? Ich denke Du hast dann evtl. diese Zeile c&p-ed und ein "Zeilenabschlusszeichen mitbekommen", mit dem chmod (& Co.) ein Problem hat.
Lucas200200 Bei dem gezeigten Quelltext fehlt der Aufruf der `main()`-Funktion.
`sensor_value` — Einzahl — ist kein so passender Name für mehrere Werte. Man könnte in dem Namen auch gleich verewigen was die Werte bedeuten: `distances`.
Beim erstellen dieser Liste bietet sich eine „list comprehension“ an.
`round()` ist eher zum runden von Werten mit denen man gerundet weiter rechnen will. Für die Ausgabe würde man eher die Formatierungssyntax verwenden.
Der Rückgabewert von `after()` wird nicht verwendet. Man sollte auch keine neuen Attribute ausserhalb der `__init__()` einführen, das macht den Code unübersichtlich und fehleranfällig wenn die Existenz von Attributen davon abhängt welche Methoden schon aufgerufen wurden.
Ungetestet:
#!/usr/bin/env python3
import tkinter as tk
from gpiozero import DistanceSensor
SENSORS = [DistanceSensor(26, 12), DistanceSensor(4, 17)]
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
font = ("Helvetica", 290)
self.left_distance_label = tk.Label(self, font=font)
self.right_distance_label = tk.Label(self, font=font)
self.left_distance_label.grid(row=0, column=0)
self.right_distance_label.grid(row=1, column=0)
def read_sensors(self):
distances = [sensor.distance * 100 for sensor in SENSORS]
print(distances)
self.left_distance_label["text"] = f"X: {distances[0]:.2f} cm"
self.right_distance_label["text"] = f"Y: {distances[1]:.2f} cm"
self.after(1000, self.read_sensors)
def main():
root = tk.Tk()
root.title("Abstandsmessung")
app = App(root)
app.pack()
app.read_sensors()
root.mainloop()
if __name__ == "__main__":
main()
Display More
Die Aufteilung der Daten könnte etwas besser sein. Im Grunde bilden Label, Sensor, und Beschriftungsvorlage etwas das man zu einem Objekt zusammenfassen könnte und das dann in zwei Ausführungen existiert.
Ungetestet:
#!/usr/bin/env python3
import tkinter as tk
from gpiozero import DistanceSensor
LEFT_ECHO_PIN = 26
LEFT_TRIGGER_PIN = 12
RIGHT_ECHO_PIN = 4
RIGHT_TRIGGER_PIN = 17
FONT = ("Helvetica", 290)
class SensorUI(tk.Label):
def __init__(self, master, sensor, text):
tk.Label.__init__(self, master, font=FONT)
self.sensor = sensor
self.text = text
def update_display(self):
distance = self.sensor.distances * 100
self["text"] = f"{self.text}: {distance:.2f} cm"
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.left_distance_label = SensorUI(
self, DistanceSensor(LEFT_ECHO_PIN, LEFT_TRIGGER_PIN), "X"
)
self.right_distance_label = SensorUI(
self, DistanceSensor(RIGHT_ECHO_PIN, RIGHT_TRIGGER_PIN), "Y"
)
self.left_distance_label.grid(row=0, column=0)
self.right_distance_label.grid(row=1, column=0)
def read_sensors(self):
self.left_distance_label.update_display()
self.right_distance_label.update_display()
self.after(1000, self.read_sensors)
def main():
root = tk.Tk()
root.title("Abstandsmessung")
app = App(root)
app.pack()
app.read_sensors()
root.mainloop()
if __name__ == "__main__":
main()
Display More