GetDir
GetDir
Hallo,
mein raspi starten im Autostart ein Programm, dass sich über eine ini-Datei konfiguriert.
Startet der Rechner im und Autostart startet mein Programm, dann wird mit GetDir(0, xxx); immer /home/pi ermittelt.
Nach einem normalem Start wird mit dem gleichen Befehl GetDir(0, xxx); auch der richtige Pfad ermittelt.
Egal wo ich im Programm einsteige (Create, Show, .... Activate).
Wo ist der Fehler ?
Viele Grüße
mein raspi starten im Autostart ein Programm, dass sich über eine ini-Datei konfiguriert.
Startet der Rechner im und Autostart startet mein Programm, dann wird mit GetDir(0, xxx); immer /home/pi ermittelt.
Nach einem normalem Start wird mit dem gleichen Befehl GetDir(0, xxx); auch der richtige Pfad ermittelt.
Egal wo ich im Programm einsteige (Create, Show, .... Activate).
Wo ist der Fehler ?
Viele Grüße
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: GetDir
In welchen Verzeichnis steht der Aufruf. Ich nehme an beim Autostart im home. Versuch einmaldas programm aus home/Pi heraus aufzurufen, dann wirst du den Effekt auch sehen. Das aktuelle Verzeichnis muss nicht mit dem Verzeichnis wo das Programm liegt übereinstimmen. Ganz besonders falls das Prg. Zb von cron gestartet wird, da wūnsche ich dir viel Spass - den hatte ich bereits.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: GetDir
wie af0815 schon geschrieben hat, liefert getdir das Verzeichnis in dem der User gerade steht. Um den Pfad des Programmes herauszufinden sollte
ExtractFilePath(Application.Exename) oder ExtractFilePath(ParamStr(0)) funktionieren.
ExtractFilePath(Application.Exename) oder ExtractFilePath(ParamStr(0)) funktionieren.
Re: GetDir
oder Application.Location.
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: GetDir
Ja was für ein Verzeichnis möchtest Du denn haben?
GetDir gibt das "current directory", das kann sonstwas sein.
Wenn Du das Programmverzeichnis willst, dann siehe oben. Wenn Du eine Config lesen willst, dann GetAppConfigDir und GetAppConfigFile. Hier aber wieder aufpassen, welcher Benutzer das Programm startet, root oder pi.
GetDir gibt das "current directory", das kann sonstwas sein.
Wenn Du das Programmverzeichnis willst, dann siehe oben. Wenn Du eine Config lesen willst, dann GetAppConfigDir und GetAppConfigFile. Hier aber wieder aufpassen, welcher Benutzer das Programm startet, root oder pi.
Re: GetDir
Mein "Fehler", da ich in der Regel meine Programme von Hand starte, gibt mir GetDir(.. bis dato auch
immer meinen gewünschten Pfad aus.
sPfad := ExtractFilePath(ParamStr(0)); schafft es den richtigen Pfad zu ermitteln, soweit so gut.
Nur diese Linux-Schei.. Mein Programm ermittelt auch an der richtigen Stelle den richtigen Pfad und lädt alle meine Parameter,
die Sensoren funktionieren undf alles sieht gut aus. GPIO ein/aus geht, nur aus den Pins kommt kein Strom, d. h. die Ausgänge werden NICHT geschaltet.
Starte ich mein Programm von Hand funktioniert ALLES. Sowie Linux mein Programm startet geht mal der Ausgang nicht oder VNC lässt keine Verbindung zu, weil
der "Computer es ablehnt". Linux verbraucht mehr Men-Power als das eigentliche Programmieren.
Mit Windows habe ich diesen Kompenezstreitigkeiten nicht. Die spionieren mich aus, dafür erlauben sie mir das zu tun was getan werden muss.
Trotzdem war es sehr lehrreich auch wenn es im Endeffekt leerreich ist.
Gruß
http://teso.de/_waermepumpe/images/wp_0.jpg
http://teso.de/_waermepumpe/images/wp_1.jpg
immer meinen gewünschten Pfad aus.
sPfad := ExtractFilePath(ParamStr(0)); schafft es den richtigen Pfad zu ermitteln, soweit so gut.
Nur diese Linux-Schei.. Mein Programm ermittelt auch an der richtigen Stelle den richtigen Pfad und lädt alle meine Parameter,
die Sensoren funktionieren undf alles sieht gut aus. GPIO ein/aus geht, nur aus den Pins kommt kein Strom, d. h. die Ausgänge werden NICHT geschaltet.
Starte ich mein Programm von Hand funktioniert ALLES. Sowie Linux mein Programm startet geht mal der Ausgang nicht oder VNC lässt keine Verbindung zu, weil
der "Computer es ablehnt". Linux verbraucht mehr Men-Power als das eigentliche Programmieren.
Mit Windows habe ich diesen Kompenezstreitigkeiten nicht. Die spionieren mich aus, dafür erlauben sie mir das zu tun was getan werden muss.
Trotzdem war es sehr lehrreich auch wenn es im Endeffekt leerreich ist.
Gruß
http://teso.de/_waermepumpe/images/wp_0.jpg
http://teso.de/_waermepumpe/images/wp_1.jpg
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: GetDir
Das hört sich sehr nach Problemen mit den permissions an.
Du kannst mal versuchen (als Root) chmod o+s program_filename
Dann wird das Programm erstmal mit rootrechten gestartet.
oder den Benutzer pi in die Gruppe gpio einfügen.
Du kannst mal versuchen (als Root) chmod o+s program_filename
Dann wird das Programm erstmal mit rootrechten gestartet.
oder den Benutzer pi in die Gruppe gpio einfügen.
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: GetDir
Aber auch nur deshalb weil du sie als quasi 'root' ausführst. Wennst du die Programme sauber unter Windows installierst und ausführst, hast du im Endeffekt dieselben Probleme (keine Rechte, läuft nur als Administrator,.....) - und die entstehen, weil ganz einfach nicht auf das Design und die Rechte geachtet wird.braspi hat geschrieben:Mit Windows habe ich diesen Kompenezstreitigkeiten nicht. Die spionieren mich aus, dafür erlauben sie mir das zu tun was getan werden muss.
Generell muss man über die Plattform und die Rechtestruktur bescheid wissen. Meine aktuellen Programme für den RasPi benötigen alle keinen Root, kein sudo oder gepfrieme mit chmod o+s.
Wie schon erwähnt reicht oft die richtige Gruppe aus oder das das Programm die nötigen Rechte übertragen bekommt (Hint : Capabilities https://wiki.archlinux.org/index.php/capabilities).
Zuletzt geändert von af0815 am Mo 28. Jan 2019, 20:54, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: GetDir
Echt, Du kannst GPIOs unter Windows schalten? Heuzutage kommst Du doch nichtmal an die Register vom Parallelport ran. Ja, früher, als wir noch Bitbanging auf 0x0378 gemacht haben um µC zu brennen...braspi hat geschrieben:Mit Windows habe ich diesen Kompenezstreitigkeiten nicht.
Nix Linux, Du bist wahrscheinlich einfach zu ungeduldig: viewtopic.php?p=107232#p107232braspi hat geschrieben:GPIO ein/aus geht, nur aus den Pins kommt kein Strom, d. h. die Ausgänge werden NICHT geschaltet.
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: GetDir
Eigentlich sollte das seit Stretch kein Problem mehr sein. Meine Pis laufen alle mit den Standardeinstellungen für die GPIO und da kann ich sowohl als root mit per cron gestarteten als auch als user mit von Hand gestarteten Programmen drauf zugreifen.fliegermichl hat geschrieben:oder den Benutzer pi in die Gruppe gpio einfügen.
Oder er hat halt noch eine Uraltversion, aber da gab es eher das Problem, dass root auf die GPIOs zugreifen konnte und user nicht.
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: GetDir
Dann nimm eine Richtige I/O Karte mit zerifizierten TreibernTimm Thaler hat geschrieben:Echt, Du kannst GPIOs unter Windows schalten? Heuzutage kommst Du doch nichtmal an die Register vom Parallelport ran. Ja, früher, als wir noch Bitbanging auf 0x0378 gemacht haben um µC zu brennen...braspi hat geschrieben:Mit Windows habe ich diesen Kompenezstreitigkeiten nicht.

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: GetDir
Lt. Bildern würde ich ev. auf eine ältere Version tippen.Timm Thaler hat geschrieben:Oder er hat halt noch eine Uraltversion, aber da gab es eher das Problem, dass root auf die GPIOs zugreifen konnte und user nicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: GetDir
Nene, passt schon, Raspbian sieht immer so altbacken aus.af0815 hat geschrieben:Lt. Bildern würde ich ev. auf eine ältere Version tippen.
Autsch! Du schreibst jetzt bitte hundert Mal: "Ich werde keine China-Relais zum Schalten von Netzspannung verwenden!"braspi hat geschrieben:http://teso.de/_waermepumpe/images/wp_0.jpg
Ernsthaft, auch wenn die Chinesen was anderes behaupten: Diese blauen Songle-Teile sind an dieser Stelle nicht zum Schalten von Netzspannung zugelassen. Der Isolationsabstand zwischen Steuerseite (beide Pins aussen) und Netzseite (mittlerer Pin) ist zu klein. Und da helfen auch keine Ausfräsungen auf der Leiterplatte, die Kriechstrecke verläuft auf dem Relais. Zumal Du das Potential auch noch über die 3-adrige Leitung nach aussen schleppst.
Über die Holzplatte als Grundplatte reden wir gar nicht erst...
Re: GetDir
Nein, ich werde nicht hundermal --- schreiben.
- Die "Anlage" steht in einem Trockenraum
- hat ein Isoliergehäuse (staubgeschützt, spritzwassergeschützt)
- der Isolierabstand ist 3 mm (habe ich gerade nachgemessen, DIN = 3 mmm)
- die Bauteile stehen auf Kunststoffschrauben
- ich verwende keine Mittel- oder Hochspannung
- Netzspannung wird mit FI-Schalter abgesegnet
- die Last ist ca. 430 W (das sollten die Kontakte des Relais schon aushalten, 1,9 A)
- die Grundplatte, geht besser und werde ich ändern !
ich denke, dass ich keinen Schaden anrichten werde.
Herzlichen Dank für Fürsorge
- Die "Anlage" steht in einem Trockenraum
- hat ein Isoliergehäuse (staubgeschützt, spritzwassergeschützt)
- der Isolierabstand ist 3 mm (habe ich gerade nachgemessen, DIN = 3 mmm)
- die Bauteile stehen auf Kunststoffschrauben
- ich verwende keine Mittel- oder Hochspannung
- Netzspannung wird mit FI-Schalter abgesegnet
- die Last ist ca. 430 W (das sollten die Kontakte des Relais schon aushalten, 1,9 A)
- die Grundplatte, geht besser und werde ich ändern !
ich denke, dass ich keinen Schaden anrichten werde.
Herzlichen Dank für Fürsorge
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: GetDir
Muss 6mm sein. Du baust ein Gerät mit Schutzklasse II / Schutz durch doppelte oder verstärkte Isolierung. Daran ändert auch nichts, dass Du den PE mit reinführst, die Raspi Seite bleibt SKII. Und Du hast das Gerät fest angeschlossen, damit muss es CATIII = 4kV Prüfspannung entsprechen. Die Relais sind aber nur mit 1.5kV Prüfspannung angegeben.braspi hat geschrieben:- der Isolierabstand ist 3 mm (habe ich gerade nachgemessen, DIN = 3 mmm)
Ist Geiz denn wirklich so geil, das es nicht mehr für ein Finder-Relais mit Sockel gereicht hat?