GetDir

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
braspi
Beiträge: 57
Registriert: So 20. Mär 2016, 16:39

GetDir

Beitrag von braspi »

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

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: GetDir

Beitrag von fliegermichl »

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.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: GetDir

Beitrag von wp_xyz »

oder Application.Location.

Timm Thaler
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

Beitrag von Timm Thaler »

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.

braspi
Beiträge: 57
Registriert: So 20. Mär 2016, 16:39

Re: GetDir

Beitrag von braspi »

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

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: GetDir

Beitrag von fliegermichl »

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.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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.

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.

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).

Timm Thaler
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

Beitrag von Timm Thaler »

braspi hat geschrieben:Mit Windows habe ich diesen Kompenezstreitigkeiten nicht.


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:GPIO ein/aus geht, nur aus den Pins kommt kein Strom, d. h. die Ausgänge werden NICHT geschaltet.


Nix Linux, Du bist wahrscheinlich einfach zu ungeduldig: https://www.lazarusforum.de/viewtopic.php?p=107232#p107232

Timm Thaler
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

Beitrag von Timm Thaler »

fliegermichl hat geschrieben:oder den Benutzer pi in die Gruppe gpio einfügen.


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.

Oder er hat halt noch eine Uraltversion, aber da gab es eher das Problem, dass root auf die GPIOs zugreifen konnte und user nicht.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

Timm Thaler hat geschrieben:
braspi hat geschrieben:Mit Windows habe ich diesen Kompenezstreitigkeiten nicht.

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...
Dann nimm eine Richtige I/O Karte mit zerifizierten Treibern :-) zB. eine von NI (wenn nicht auf den Preis ankommt - hehe) BTW: Auf die serielle kommt man noch ein weniog drauf, zumindest indirekt über ein paar Statussignale. bzw. Nimm eine Modbus-Anschaltbaugruppe.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

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.
Lt. Bildern würde ich ev. auf eine ältere Version tippen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Timm Thaler
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

Beitrag von Timm Thaler »

af0815 hat geschrieben:Lt. Bildern würde ich ev. auf eine ältere Version tippen.


Nene, passt schon, Raspbian sieht immer so altbacken aus.

braspi hat geschrieben:http://teso.de/_waermepumpe/images/wp_0.jpg


Autsch! Du schreibst jetzt bitte hundert Mal: "Ich werde keine China-Relais zum Schalten von Netzspannung verwenden!"

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...

braspi
Beiträge: 57
Registriert: So 20. Mär 2016, 16:39

Re: GetDir

Beitrag von braspi »

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

Timm Thaler
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

Beitrag von Timm Thaler »

braspi hat geschrieben:- der Isolierabstand ist 3 mm (habe ich gerade nachgemessen, DIN = 3 mmm)


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.

Ist Geiz denn wirklich so geil, das es nicht mehr für ein Finder-Relais mit Sockel gereicht hat?

Antworten