INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Fortran-Programm über Labview starten



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

20.04.2013, 07:08 (Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2013 07:11 von jh1988.)
Beitrag #1

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



Fortran-Programm über Labview starten
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


Angehängte Datei(en)
0.0 .zip  SPCoord.zip (Größe: 190,57 KB / Downloads: 286)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2013, 20:47
Beitrag #2

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: Fortran-Programm über Labview starten
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.04.2013, 21:15
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Fortran-Programm über Labview starten
(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?

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2013, 10:16
Beitrag #4

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



RE: Fortran-Programm über Labview starten
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2013, 17:16 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2013 17:18 von NWOmason.)
Beitrag #5

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Fortran-Programm über Labview starten
(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

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2013, 18:56
Beitrag #6

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: Fortran-Programm über Labview starten
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.04.2013, 01:14 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2013 01:29 von rolfk.)
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Fortran-Programm über Labview starten

Akzeptierte Lösung

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

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2013, 05:08
Beitrag #8

Holy Offline
LVF-Stammgast
***


Beiträge: 339
Registriert seit: Sep 2008

2014
2007
EN

09XXX
Deutschland
RE: Fortran-Programm über Labview starten
Das ist die exakte Erklärung. Sobald du den Working Path verbindest kannst die Quelldatei von sonstwo laden.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2013, 08:57
Beitrag #9

jh1988 Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Dec 2012

2011
2012
DE



RE: Fortran-Programm über Labview starten
Hi,
Vielen Dank, es funktioniert jetzt genau so wie ich es will!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2013, 18:40
Beitrag #10

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Fortran-Programm über Labview starten
(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*):

   

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Windows-Script (*.vbs) Dateien in LabVIEW starten Zet 12 22.890 01.06.2015 16:40
Letzter Beitrag: rolfk
  Pumpe in LabVIEW über Sytem Exec an und ausschalten lazfather 8 8.694 30.10.2014 10:14
Letzter Beitrag: jg
  Labview Programm kontrolliert schließen Moxel 18 22.565 24.06.2013 19:09
Letzter Beitrag: Holy
Question C++ DLL mit GUI von LabVIEW starten balze 3 7.199 06.09.2012 12:28
Letzter Beitrag: balze
  Aus LabVIEW heraus externes Programm starten htw10870 7 21.150 19.11.2011 18:40
Letzter Beitrag: rolfk
  Textuelle Ausgabe über DLL in LabView Textbox/Output Effemfour 6 8.092 24.11.2010 13:46
Letzter Beitrag: rolfk

Gehe zu: