Fehler in Autostart
-
Lucas200200 -
14. Juni 2021 um 08:30 -
Erledigt
-
-
Fehler in Autostart? Schau mal ob du hier fündig wirst!
-
Nur nicht beim Starten des Rasberrys.
Weil zu diesem Zeitpunkt, die Abhängigkeiten evtl. noch nicht erfüllt sind.
-
- Offizieller Beitrag
Ist die *.desktop-Datei im Verzeichnis /home/pi/.config/autostart?
rpi444 Dazu müsste der RPi wissen auf welchem Display das Skript gestartet werden soll.
-
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
CodeZugriff 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?
-
-
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:
Python
Alles anzeigen#!/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()
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:
Python
Alles anzeigen#!/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()
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!