LabVIEWForum.de
Standardeingabe/Standardausgabe - 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: Standardeingabe/Standardausgabe (/Thread-Standardeingabe-Standardausgabe)

Seiten: 1 2


Standardeingabe/Standardausgabe - s200rs - 16.04.2008 14:38

Hallo,

Ich habe ein Programm, das normalerweise über die Kommandozeile gesteuert wird, ich nun aber über LabVIEW ansprechen muß.

Wenn ich es über "Systembefehl ausführen" starte, kann ich über "Standardeingabe" ein paar Kommandos übergeben, die man sonst eintippen würde, und bekomme die Antwort des Programms, die normalerweise auf dem Bildschirm erscheint, bzw. eine Fehlermeldung über Standardausgabe bzw. Standardfehler des Sub-VIs und kann mir diese in entsprechenden Anzeigelementen ansehen.

So weit so gut, nur bekomme ich die Antwort erst, wenn das Programm beendet ist. Ich möchte aber, daß das Programm am Laufen bleibt und ich die Antwort abrufen kann, sobald die Eingabe getätigt wurde. Ich kann ja nicht für jedes Kommando das Programm neu starten und initialisieren.

Also müßte ich quasi eine Adresse einrichten, auf die ich von LV aus die Daten schreibe und eine von der ich die Antwort abhole, und somit die Standardeingabe Tastatur und die Standardausgabe Monitor im eingentlichen Sinn auf mein LV-Programm ändern.

Welche Möglichkeit gibt es da?

Gruß Andreas


Standardeingabe/Standardausgabe - Y-P - 16.04.2008 15:49

Hast Du schon mal bei "wait until completion" ein "False" angeschlossen? Vielleicht hilft Dir auch das mit Deinen Befehlen. Hmm

Gruß Markus


Standardeingabe/Standardausgabe - IchSelbst - 16.04.2008 16:24

' schrieb:Also müßte ich quasi eine Adresse einrichten
Im Prinzip ja. Die "Adresse" wäre dann ein gemeinsamer Speicherbereich - sowas geht - aber mit LV ?

Du könntest mal folgendes probieren:

Früher konnte man das Eingabemedium und das Ausgabemedium angeben. Das Standard-Eingabemedium ist die Tastatur, das Standard-Ausgabemedium ist der Bildschirm. Beide konnte man umleiten - z.B. in eine Datei. Die Syntax hierfür lautete: MyProgram >Input <Output. (Ob es zwei Klammern << bzw. >> sein mussten, weiß ich nicht mehr). Probier doch mal folgendes: MyProgram <C:MyIn.txt >MyOut.txt. Du müsstest dann praktisch in das File C:Mytxt schreiben und das File c:MyOut.txt ständig scannen.

Ob das heute noch geht, weiß ich nicht.

[*grübel*]

Hin Senden zum Programm würde man mit SendInput() hinbekommen. Das wäre halbwegs "Stand der Technik". Vom Programm aus sieht das dann aus, als ob jemand die Tastatur bedient. Den Rest müsste man machen mit der Umleitung vom Bildschirm in ein (sequenzielles) File.


Standardeingabe/Standardausgabe - IchSelbst - 16.04.2008 17:19

' schrieb:Du könntest mal folgendes probieren:
Schade, geht nicht (nicht mehr?).


Standardeingabe/Standardausgabe - rolfk - 16.04.2008 22:44

' schrieb:Hallo,

Ich habe ein Programm, das normalerweise über die Kommandozeile gesteuert wird, ich nun aber über LabVIEW ansprechen muß.

Wenn ich es über "Systembefehl ausführen" starte, kann ich über "Standardeingabe" ein paar Kommandos übergeben, die man sonst eintippen würde, und bekomme die Antwort des Programms, die normalerweise auf dem Bildschirm erscheint, bzw. eine Fehlermeldung über Standardausgabe bzw. Standardfehler des Sub-VIs und kann mir diese in entsprechenden Anzeigelementen ansehen.

So weit so gut, nur bekomme ich die Antwort erst, wenn das Programm beendet ist. Ich möchte aber, daß das Programm am Laufen bleibt und ich die Antwort abrufen kann, sobald die Eingabe getätigt wurde. Ich kann ja nicht für jedes Kommando das Programm neu starten und initialisieren.

Also müßte ich quasi eine Adresse einrichten, auf die ich von LV aus die Daten schreibe und eine von der ich die Antwort abhole, und somit die Standardeingabe Tastatur und die Standardausgabe Monitor im eingentlichen Sinn auf mein LV-Programm ändern.

Welche Möglichkeit gibt es da?

Gruß Andreas

Das geht mit der OpenG pipe library die ich mal entwickelt habe. Allerdings ist diese noch nicht als OpenG library released, da sie noch immer im Beta Stadium ist. Deshalb wirst Du Dir die Files vom CVS Server runterholen müssen. Das kann entweder über einen CVS Client wie etwas Tortoise CVS oder auch über obengenannte HTML Browse Seite da es nicht so viele VIs sind und deshalb durchaus File für File gedownloaded werden kann.

Beta Stadium will sagen, es läuft bei mir normalerweise für die Dinge dich ich tun will aber es gibt da durchaus noch Möglichkeiten dass das manchmal nicht immer auf Anhieb funkzt.

Du wirst vor allem interessiert sein an der Library selber mit der entsprechenden DLL die Du im "source" Verzeichnis findest. Zudem können die VIs im "test" Verzeichnis als eine Art Vorbild dienen wie man mit diesen VIs umgehen kann. IchSelbst wird wohl eher am Inhalt des Verzeichnisses "c_source" interessiert sein Wink-2

Rolf Kalbermatter


Standardeingabe/Standardausgabe - s200rs - 17.04.2008 07:42

' schrieb:Hast Du schon mal bei "wait until completion" ein "False" angeschlossen? Vielleicht hilft Dir auch das mit Deinen Befehlen. Hmm

Jo, hab ich, bringt aber nichts, weil ich dann ja keine Möglichkeit mehr habe, ein Kommando zum Beenden des Programms während der Laufzeit des VIs zu übergeben.

Ich denke, daß das, was Rolf geschrieben hat, das sein könnte, was ich suche. Habe mir die Dateien runtergeladen, sie lassen sich aber weder mit LV 7.1 noch mit LV 8.5 öffnen, da kommt immer die Fehlermeldung "Dies ist keine Ressourcen-Datei" oder "Dies ist keine zulässige LabVIEW-Datei"

Wo könnte das Problem liegen?

Gruß Andreas


Standardeingabe/Standardausgabe - rolfk - 18.04.2008 21:07

' schrieb:Jo, hab ich, bringt aber nichts, weil ich dann ja keine Möglichkeit mehr habe, ein Kommando zum Beenden des Programms während der Laufzeit des VIs zu übergeben.

Ich denke, daß das, was Rolf geschrieben hat, das sein könnte, was ich suche. Habe mir die Dateien runtergeladen, sie lassen sich aber weder mit LV 7.1 noch mit LV 8.5 öffnen, da kommt immer die Fehlermeldung "Dies ist keine Ressourcen-Datei" oder "Dies ist keine zulässige LabVIEW-Datei"

Wo könnte das Problem liegen?

Gruß Andreas

Dein Webbrowser spinnt und beschädigt die Dateien beim Downloaden weil er sie als Textdatei behandeln will. Am Besten ginge es halt über direkten CVS Zugang und nur zum donwloaden geht das sogar anonymous.

Aber um es was leichter zu machen habe ich die VIs mal in ein ZIP File gepackt. Sind LabVIEW 6.0(.2) Format für wen das interessiert.

[attachment=12092]

Rolf Kalbermatter


Standardeingabe/Standardausgabe - s200rs - 21.04.2008 09:02

' schrieb:Aber um es was leichter zu machen habe ich die VIs mal in ein ZIP File gepackt. Sind LabVIEW 6.0(.2) Format für wen das interessiert.

Rolf Kalbermatter

Hallo,

vielen dank, konnte die VIs jetzt öffnen und verwenden, und - ES FUNTKIONIERT Yahoo

Nochmals vielen Dank, das hat mir ein ganzes Stück weitergeholfen.

Gruß Andreas


Standardeingabe/Standardausgabe - Y-P - 21.04.2008 10:17

Kannst Du das Beispiel (inkl. SubVIs) mal hochladen. Da haben bestimmt einige (inkl. mir Big Grin) Interesse daran.

Gruß Markus

' schrieb:Hallo,

vielen dank, konnte die VIs jetzt öffnen und verwenden, und - ES FUNTKIONIERT Yahoo

Nochmals vielen Dank, das hat mir ein ganzes Stück weitergeholfen.

Gruß Andreas



Standardeingabe/Standardausgabe - s200rs - 21.04.2008 10:41

' schrieb:Kannst Du das Beispiel (inkl. SubVIs) mal hochladen. Da haben bestimmt einige (inkl. mir Big Grin) Interesse daran.

Gruß Markus

Ist ungünstig, weil das Programm, das ich einbinde mit einem Gerät kommuniziert und beim Start, wenn das Gerät nicht angeschlossen ist, einen Fehler bringt und sich sofort wieder beendet.

Aber ich lade es etwas abgewandelt hoch, so daß man die Kommandozeile editieren kann.

Außerdem gibt's in der Zip-Datei von Rolf Kalbermatter ein Unterverzeichnis namens "tests" wo ein paar verschiedene Beispiele drin sind.

[attachment=12110] LabVIEW 8.5

Gruß Andreas

@Rolf K.: was bedeutet überhaupt das "FD" bei "standard error fd" in z.B. "Open System Command.vi"