LabVIEWForum.de
Fortran-Programm über Labview starten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Fortran-Programm über Labview starten (/Thread-Fortran-Programm-ueber-Labview-starten)

Seiten: 1 2


Fortran-Programm über Labview starten - jh1988 - 20.04.2013 07:08

Hallo,

ich habe ein Problem ein altes Fortran-Programm über Labview zu starten. Das Labview-Programm soll dabei folgendes machen:
Aus einer txt-Datei (die typischerweise nicht im selben Ordner wie das VI liegt) werden bestimmte Koordinaten (Koordinaten.log) eingelesen und in eine Input-txt-Datei (SPCoord.INP) geschrieben. Danach soll automatisch das Fortran-Programm (SPCoord.exe) gestartet werden, was die zuvor erstellte SPCoord.INP einliest und eine SPCoord.OUT als Output-Datei erstellt. Die Output-Datei wird dabei immer erstellt, bei nicht erfolgreichem Ausführen des Programmes ist sie allerdings leer.
Das Erstellen der Input-Datei und das Ausführen des Programmes funktioniert auch, aber NUR solange die Datei mit den Koordinaten genau in dem Ordner des VIs und des Fortran-Programmes liegen. Ist die Koordinaten-Datei in einem anderen Ordner kann das Fortran-Programm die Datei nicht mehr finden (und schreibt eine leere Output-Datei in den Ordner der Koordinaten-Datei).
Erstelle ich allerdings eine Input-Datei und führe dann manuell das Fortran-Programm aus (d.h. nicht über Labview) funktioniert wieder alles.
Ob es ein Fehler in Fortan ist, kann ich leider nicht sagen.
Eine mögliche Lösung ist, vor Starten des Fortran-Programmes, sowohl Input-Datei als auch Fortran-Programm in den Ordner der Koordinaten-Datei zu kopieren und dann alles zu starten. Dies funktioniert auch, ist aber m.E. sehr umständlich. Vielleicht hatte jemand schon mal so ein Problem und kann mir weiterhelfen.

MfG
jh

lv11_img


RE: Fortran-Programm über Labview starten - Holy - 20.04.2013 20:47

Das Fortran-Programm kommt nicht damit klar wenn die Quelldatei nicht neben ihm liegt. Folgende Meldung kommt da:

Code:
At line 17 of file SPCoord2.f90 (unit = 5, file = 'stdin')
Fortran runtime error: End of file

Entweder du kannst das Fortran-Programm korrigieren oder musst deinen beschriebenen Weg gehen.


RE: Fortran-Programm über Labview starten - rolfk - 20.04.2013 21:15

(20.04.2013 07:08 )jh1988 schrieb:  Erstelle ich allerdings eine Input-Datei und führe dann manuell das Fortran-Programm aus (d.h. nicht über Labview) funktioniert wieder alles.
Ob es ein Fehler in Fortan ist, kann ich leider nicht sagen.
Eine mögliche Lösung ist, vor Starten des Fortran-Programmes, sowohl Input-Datei als auch Fortran-Programm in den Ordner der Koordinaten-Datei zu kopieren und dann alles zu starten. Dies funktioniert auch, ist aber m.E. sehr umständlich. Vielleicht hatte jemand schon mal so ein Problem und kann mir weiterhelfen.

Vielleicht eine dumme Frage, aber kann das Fortran-Programm nicht auch absolute Pfadnamen akzeptieren als Parameter? Oder kann man dem Programm gar keinen Filenamen als Parameter übergeben? Dann wäre es natürlich logisch dass das File immer mit festem Namen im Verzeichnis des Programmes liegen muss. Denn wie soll das Programm anders wissen wo Du das File hingelegt hast?

Und wie meinst Du "Erstelle ich allerdings eine Input-Datei und führe dann manuell das Fortran-Programm aus (d.h. nicht über Labview) funktioniert wieder alles." ?

Liegt die Datei dann in einem anderen Verzeichnis dann das Programm?


RE: Fortran-Programm über Labview starten - jh1988 - 21.04.2013 10:16

Genau, die Input-Datei muss immer mit festen Namen (SPCoord.INP) im selben Verzeichnis sein wie das Fortran-Programm.

Das Labview-Programm erstellt die Input-Datei auch in dem selben Verzeichnis. Starte ich aber jetzt das Fortran-Programm über Labview bringt es mir den oben genannten Fehler weil es die Datei angeblich nicht findet.
Erstelle ich die Input-Datei über das Labview-Programm und starte dann das Fortran-Programm per Hand läuft alles ohne Probleme.

Ich hoffe das Problem ist jetzt ein bisschen verständlicher geworden


RE: Fortran-Programm über Labview starten - NWOmason - 21.04.2013 17:16

(21.04.2013 10:16 )jh1988 schrieb:  Genau, die Input-Datei muss immer mit festen Namen (SPCoord.INP) im selben Verzeichnis sein wie das Fortran-Programm.

Dann musst du sie halt da die Stelle legen, an der das Fortran-Programm liegt?

(21.04.2013 10:16 )jh1988 schrieb:  Erstelle ich die Input-Datei über das Labview-Programm und starte dann das Fortran-Programm per Hand läuft alles ohne Probleme.

Also bekommst du den Fehler auch, wenn die LV+Fortran+Input-Datei im gleichen Verzeichnis liegen?

(21.04.2013 10:16 )jh1988 schrieb:  Ich hoffe das Problem ist jetzt ein bisschen verständlicher geworden

Äh, also wenn ich es richtig verstanden habe, musst du nur dafür sorgen, dass die Input-Datei im Verzeichnis des Fortran-Programms liegt Hmm

Beste Grüße,
NWO


RE: Fortran-Programm über Labview starten - Holy - 21.04.2013 18:56

Scheinbar bekommt das Fortran Programm mit unter welchem Pfad zuletzt eine Datei gelesen wurde. Denn neben der Quelldatei legt er die Input- und auch die Output-Datei an, wenn die Quelldatei nicht neben dem Fortran-Programm ist. Das ist definitiv nen Problem des Fortran-Programmes da du als Schnittstelle nur die Input-Datei und die Eingaben in der Konsole hast. Und beides wird durch den Benutzer bzw. dein LabVIEW Programm korrekt erstellt/durchgeführt.


RE: Fortran-Programm über Labview starten - rolfk - 22.04.2013 01:14

(21.04.2013 18:56 )Holy schrieb:  Scheinbar bekommt das Fortran Programm mit unter welchem Pfad zuletzt eine Datei gelesen wurde. Denn neben der Quelldatei legt er die Input- und auch die Output-Datei an, wenn die Quelldatei nicht neben dem Fortran-Programm ist. Das ist definitiv nen Problem des Fortran-Programmes da du als Schnittstelle nur die Input-Datei und die Eingaben in der Konsole hast. Und beides wird durch den Benutzer bzw. dein LabVIEW Programm korrekt erstellt/durchgeführt.

Dann übergib System Exec doch einfach im "working directory" den Pfad zum Directory wo die Inputdatei liegt. Das wird dann für den erzeugten Prozess das "current directory".
Wenn Du ein CommandLine Programm über die Command Shell aufrufst ist das "current directory" das Directory wo die Command Shell ist wenn das Programm aufgerufen wird. Ein Programm das durch LabVIEW mit System Exec aufgerufen wird, bekommt als "current directory" das Directory das Du im "working directory" angibst und wenn Du das leer lässt erbt das Programm das "current directory" von LabVIEW in dem Moment wenn das Programm gestartet wird. Das "current directory" einer Applikation (hier LabVIEW) kann durch expliziten Aufruf einer Windows API Funktion verändert werden, wird aber auch implizit zu dem Directory verändert wo man ist, wenn man den Windows File Dialog mit OK bestätigt. LabVIEW selber verändert das "current directory" nicht, sondern der Windows File Dialog den LabVIEW verwendet, tut das.


RE: Fortran-Programm über Labview starten - Holy - 22.04.2013 05:08

Das ist die exakte Erklärung. Sobald du den Working Path verbindest kannst die Quelldatei von sonstwo laden.


RE: Fortran-Programm über Labview starten - jh1988 - 22.04.2013 08:57

Hi,
Vielen Dank, es funktioniert jetzt genau so wie ich es will!


RE: Fortran-Programm über Labview starten - NWOmason - 22.04.2013 18:40

(22.04.2013 05:08 )Holy schrieb:  Das ist die exakte Erklärung. Sobald du den Working Path verbindest kannst die Quelldatei von sonstwo laden.

Eine Mini-Verbesserungsvorschlag (aber nur für Perfektionisten*gg*):

[attachment=44433]

Beste Grüße,
NWO