13.07.2006, 15:35
|
eg
LVF-SeniorMod
Beiträge: 3.868
Registriert seit: Nov 2005
2016
2003
kA
66111
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
Hab gerade gesehen, dass wenn man das FP öffnet, das SubVI doch nicht startet.
Habe auch umgekehrt probiert mit RunVI, und bei Einstellungen Show FP when called angeklickt. Funktioniert aber auch nicht.
Also es bleibt nur noch beides über Nodes zu machen (FP Öffnen und das VI starten).
Gruss
|
|
|
13.07.2006, 15:39
(Dieser Beitrag wurde zuletzt bearbeitet: 13.07.2006 15:40 von Achim.)
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
@ eugen graf:
Es gibt hier aber keine Static VI Referenz auf das zu öffnende VI, eben weil es nicht mit dem gesamten Code geladen wird, sondern erst bei Bedarf (dynamisch), und auch wieder komplett aus dem Speicher entfernt wird, wenn es geschlossen wird! Da das VI nicht bei Programmstart geladen wird, geht das "Aufstarten" der Applikation schneller. Das kommt natürlich nur bei vielen solchen VI zum tragen! Und die VI's laufen nur dann, wenn sie wirklich gebraucht werden, was die CPU entlastet! Und sollte es ja auch sein: Nur notwendige Applikationen/Anzeigen sollten laut Anforderung laufen, insbesondere da das völlig eigenständige Programme sind, die nur über das Haupt-VI "verwaltet" werden!
Das mit dem Methodenknoten hab ich deswegen drin, um immer zu wissen, was ich eigentlich mache! Klar geht das auch über die VI Einstellugen. Aber: Das VI läuft dann nicht sofort, wenn ich's mal zum editieren will öffnen will, z.b. für ne Aktualisierung! Wenn man das öfters machen muss, ist das ständige Ausschalten ganz schön nervig! Sollte dann auch noch wie in nem Dialog die Leiste verborgen sein, und ein Stop-Button gar nicht vorhanden sein (weil's z.b. ne selbst-quittierende Meldung ist), müsste man schon mit STRG + . stoppen, wenn mans aus irgendwelchen Gründen (z.b. weil das schon jeder "Blindbenutzer" kennt) deaktiviert hat...tjaha, man hat so seine Gründe ;-)....ist alles schon vorgekommen!
EDIT: Hab grad eugens post gelesen: Das kriegt man aber hin mit dem starten über die VI einstellungen! EDIT end
Feierabend!
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
18.07.2006, 09:53
|
iwf
LVF-Neueinsteiger
Beiträge: 1
Registriert seit: Jul 2006
8.00
2006
kA
Oesterreich
|
Öffnen eines VIs aus einem anderen Frontpanel
Ola!
Zuerst einmal Hallo an alle, die hier gepostet haben! Ich hatte anfangs auch das Problem, verschiedene VIs mit dem Wunsch, über Buttons aufzurufen. Nun klappt das auch, danke
Jedoch brauch ich noch eine kleine Hilfe hierzu: Ich steuere mit diesem VI kleinere VIs an, die auf einen HP Logikanalysator via VISA/GPIB zugreifen. Bei jedem dieser kleinen Unter-VIs muss ich jedoch immer wieder das Gerät auswählen, auf das ich zugreifen möchte (via Dropdownmenü). Nun hab ich mir gedacht, dass man das so machen könnte, dass ich im Haupt-VI das Gerät auswähle und es als Variable an die Unter-VIs weitergebe. Wie kann ich das jedoch anstellen?
Danke!
IWF
|
|
|
18.07.2006, 10:15
(Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2006 10:17 von Achim.)
|
|
|
23.10.2006, 09:52
(Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2006 09:53 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
' schrieb:kopiere dir die drei VI mal in einen gemeinsamen Ordner, und starte das "neu_Menu_Vi.vi"...
Hat mich auch interessiert, sehr gut. Mich würde interessieren, wie Deine Lösung aussehen würde, wenn die Anforderung folgendermaßen modifiziert würde:
a) Bei geöffnetem SUB-VI soll am Hauptprogramm nichts mehr bedient werden dürfen. (Das Ereignis ist solange nicht beendet, solange das Sub-VI geöffnet ist)
b) Bei Schließen des Sub-VIs sollen Werte aus dem Sub-Vi an des Hautprogramm übergeben werden.
Bei direkten Aufruf des SUB-VIs aus dem Ereignis heraus hat man diese Eigenshaften quasi kostenlos, aber Dir wird wohl auch so eine elegante Möglichkeit einfallen, wie man das in Deinem Beispiel macht.
|
|
|
23.10.2006, 10:37
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
Hi Lucki,
um das HauptVI zu sperren kann man das SubVI "modal" definieren, d.h. kein anderes VI kann mehr bedient werden. Das geht dann natürlich nur, wenn man nur ein SubVI auf die von mir gezeigte Art öffnet. Ansonsten fällt mir so auf die schnelle auch nichts ein...aber: Wenn auf dem Haupt-Panel nichts mehr verändert werden darf: Wann soll diese Sperrung erfolgen? Nach dem öffnen von SubVI Nr.1? Dann kann ich weitere SubVIs ja eh nicht mehr öffnen und die "Öffnen"-Funktionalität für die anderen VIs wäre für die Katz! Und dies gilt ja grundsätzlich! Egal wie mans macht: Wenn ein VI eine Sperrung veranlasst, kann man mit den anderen nichts mehr anfangen. Alternativ könnte man aber einzelne Controls in "NachbarVIs" über ihre Referenz auf "Disabled" schalten, wenn das durch ein SubVI angefordert würde.
Die Sperrung könnte man auch noch dadurch erreichen, dass man das Haupt-Panel "hidden" schaltet, sobald das SubVI geöffnet ist...man darf dann halt beim Schließen des SubVIs nicht vergessen, das HauptVI wieder hervorzuholen!
Der Zweck dieses Beispiels war ja auch ein anderer: Es sollten unabhängige VIs gestartet werden, das HauptVI ist hier nur als "Verwaltungswerkzeug" gedacht. Die Datenübergabe nach VI-Ende könnte man über globale Variablen oder auch ne Queue machen.
Natürlich hast du recht: Wenn man direkt aus dem HauptVI aufruft, kriegt man die Sperrung und die Übergabe von Daten leichter hin. Aber dafür muss das Hauptprogramm halt auch auf das Beenden des SubVI warten.
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
|
|
|
23.10.2006, 17:14
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
@Achim
Du hast vollkomen recht, der Zweck der Übung hier war ein ganz anderer: es war gerade beabichtigt, wmehrere unabhängige Vo zu offenen.
Aber in mindestens gleicher Häufigkeit steht die Forderung an, daß jeweils nur ein Sub-VI geöffnet werden soll und nichts anderes möglich sein soll, bevor nicht das betreffende Sub-VI bedient und beendet wurde.
Beispiel. Meßplatz für irgendwas, es werden nacheinander unterschiedliche Parameter am Objekt gemessen, wobei das Objekt jedesmal auch bedient werden muß. Alle Werte sollen protokolliert werden.
Lösung: Vom Hauptprogramm lassen sich die einzelnen (Sub)VIs aktivieren, gewissermaßen als eigene Tasks zur Messung eines Parameters. Bei der Rückkehr ins Hauptprogramm werden die jeweiligen Daten übergeben. Das Hauptprogramm erstellt dann, wenn alle Daten vollständig sind, das Protokoll; es dient auch hier nur gewissermaßen zur Verwaltung.
Anderes Beipiel: Grundeinstellungen vornehmen. Die Grundeinstellungen im Haupt-Vi vozunehmen, und sei es auf einer anderen Registerkartenseite, finde ich nicht ideal. Besser ist ein Schalter "Einstellungen", und der öffnet dann ein eigenes VI, wobei es auch keinen Sinn macht, wenn man während der Bedienung dieses VI noch alles mögliche andere machen kann.
|
|
|
18.07.2007, 10:15
|
PeterS
LVF-Grünschnabel
Beiträge: 13
Registriert seit: Sep 2005
8.2; 7.1
2004
kA
64293
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
' schrieb:Hi,
das sollte entweder über ne globale Variable oder über ne Umgebungsvariable (ab LV8) funktionieren. Im "HauptVI" schreibst du da den Namen z.b. in ne String-Variable und in den jeweiligen "UnterVI" liest du das wieder aus...schau dir die Hilfe in LV an, wie diese Variablentypen funktionieren!
Gruss
Achim
Im Prinzip geht das aber auch über den Invoke-Node->Control Value->Set...für alle, die ungern mit globalen Variablen arbeiten:-)
Gruss,
Peter
|
|
|
18.07.2007, 10:43
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
Das hier ist auch eine Möglichkeit.
Man muss bei "Window Appearance" halt noch "Dialog" einstellen.
Gruß Markus
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
07.04.2009, 10:43
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2009 10:49 von RJ1.)
|
RJ1
LVF-Grünschnabel
Beiträge: 10
Registriert seit: Apr 2009
7.1
-
de
12489
Deutschland
|
Öffnen eines VIs aus einem anderen Frontpanel
Hi,
ich habe ein ähnliches Problem.
Ich möchte aus einem Hauptprogramm heraus mehrere VIs starten.
Das klappt auch!
Nun sollen aber einige dieser VIs jeweils ein bzw. mehrere AI-Kanäle von einer Karte lesen. Ich habe es nun soweit gebracht (mit zeitgesteuerten Schleifen), dass wenn ich das Timing gut einstelle das Problem des gleichzeitigen Kartenzugriffs zu verdrängen.
Das soll aber keine Dauerlösung bleiben!
Gibt es eine Möglichkeit die DAQmx - Kanäle so abzufragen, dass gleichzeitig geprüft wird ob ein anderer Kartenzugriff vorliegt und somit der Kanal kurzzeitig ausgesetzt wird?
Grüße
Robin
|
|
|
| |