GetDir

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

GetDir

Beitragvon braspi » 27. Jan 2019, 20:52 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
braspi
 
Beiträge: 57
Registriert: 20. Mär 2016, 16:39

Beitragvon af0815 » 27. Jan 2019, 21:29 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).
af0815
 
Beiträge: 3693
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon fliegermichl » 28. Jan 2019, 09:39 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.
fliegermichl
 
Beiträge: 335
Registriert: 9. Jun 2011, 08:42

Beitragvon wp_xyz » 28. Jan 2019, 09:48 Re: GetDir

oder Application.Location.
wp_xyz
 
Beiträge: 2918
Registriert: 8. Apr 2011, 08:01

Beitragvon Timm Thaler » 28. Jan 2019, 12:32 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.
Timm Thaler
 
Beiträge: 944
Registriert: 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
Nach oben

Beitragvon braspi » 28. Jan 2019, 18:39 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
braspi
 
Beiträge: 57
Registriert: 20. Mär 2016, 16:39

Beitragvon fliegermichl » 28. Jan 2019, 19:48 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.
fliegermichl
 
Beiträge: 335
Registriert: 9. Jun 2011, 08:42

Beitragvon af0815 » 28. Jan 2019, 20:50 Re: GetDir

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 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).
af0815
 
Beiträge: 3693
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon Timm Thaler » 28. Jan 2019, 20:53 Re: GetDir

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: 944
Registriert: 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
Nach oben

Beitragvon Timm Thaler » 28. Jan 2019, 20:55 Re: GetDir

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.
Timm Thaler
 
Beiträge: 944
Registriert: 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
Nach oben

Beitragvon af0815 » 28. Jan 2019, 21:01 Re: GetDir

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).
af0815
 
Beiträge: 3693
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon af0815 » 28. Jan 2019, 21:02 Re: GetDir

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).
af0815
 
Beiträge: 3693
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon Timm Thaler » 28. Jan 2019, 21:29 Re: GetDir

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...
Timm Thaler
 
Beiträge: 944
Registriert: 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
Nach oben

Beitragvon braspi » 29. Jan 2019, 12:55 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
braspi
 
Beiträge: 57
Registriert: 20. Mär 2016, 16:39

Beitragvon Timm Thaler » 29. Jan 2019, 14:38 Re: GetDir

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?
Timm Thaler
 
Beiträge: 944
Registriert: 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
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: Exabot [Bot] und 5 Gäste

porpoises-institution
accuracy-worried