16.04.2008, 14:38
Beitrag #1
|
s200rs
LVF-Gelegenheitsschreiber
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Standardeingabe/Standardausgabe
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
________________
LV 7.1; 8.5
|
|
|
16.04.2008, 15:49
Beitrag #2
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Standardeingabe/Standardausgabe
Hast Du schon mal bei "wait until completion" ein "False" angeschlossen? Vielleicht hilft Dir auch das mit Deinen Befehlen.
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
16.04.2008, 16:24
Beitrag #3
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Standardeingabe/Standardausgabe
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
16.04.2008, 17:19
Beitrag #4
|
|
|
16.04.2008, 22:44
(Dieser Beitrag wurde zuletzt bearbeitet: 16.04.2008 22:45 von rolfk.)
Beitrag #5
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
Standardeingabe/Standardausgabe
' 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
Rolf Kalbermatter
|
|
|
17.04.2008, 07:42
Beitrag #6
|
s200rs
LVF-Gelegenheitsschreiber
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Standardeingabe/Standardausgabe
' schrieb:Hast Du schon mal bei "wait until completion" ein "False" angeschlossen? Vielleicht hilft Dir auch das mit Deinen Befehlen.
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
________________
LV 7.1; 8.5
|
|
|
18.04.2008, 21:07
Beitrag #7
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
Standardeingabe/Standardausgabe
' 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.
pipe.zip (Größe: 221,77 KB / Downloads: 413)
Rolf Kalbermatter
|
|
|
21.04.2008, 09:02
Beitrag #8
|
s200rs
LVF-Gelegenheitsschreiber
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Standardeingabe/Standardausgabe
' 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
Nochmals vielen Dank, das hat mir ein ganzes Stück weitergeholfen.
Gruß Andreas
________________
LV 7.1; 8.5
|
|
|
21.04.2008, 10:17
Beitrag #9
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Standardeingabe/Standardausgabe
Kannst Du das Beispiel (inkl. SubVIs) mal hochladen. Da haben bestimmt einige (inkl. mir ) Interesse daran.
Gruß Markus
' schrieb:Hallo,
vielen dank, konnte die VIs jetzt öffnen und verwenden, und - ES FUNTKIONIERT
Nochmals vielen Dank, das hat mir ein ganzes Stück weitergeholfen.
Gruß Andreas
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
21.04.2008, 10:41
|
s200rs
LVF-Gelegenheitsschreiber
Beiträge: 75
Registriert seit: Jul 2005
7.1 / 8.5.1
2002
DE
02826
Deutschland
|
Standardeingabe/Standardausgabe
' schrieb:Kannst Du das Beispiel (inkl. SubVIs) mal hochladen. Da haben bestimmt einige (inkl. mir ) 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.
PipeTest_LV85.vi (Größe: 37,45 KB / Downloads: 420)
LabVIEW 8.5
Gruß Andreas
@Rolf K.: was bedeutet überhaupt das "FD" bei "standard error fd" in z.B. "Open System Command.vi"
________________
LV 7.1; 8.5
|
|
|
| |