13.10.2008, 10:36
Beitrag #1
|
fidel
LVF-Gelegenheitsschreiber
Beiträge: 247
Registriert seit: Aug 2006
8.00 // 8.2.1 // 8.5
2006
de
76185
Deutschland
|
Popup innerhalb Event-Based Programm
Hallo,
ich habe aktuell in Programm in Überarbeitung welches im Kern wie folgt aufgebaut ist:
* While Loop
* Darin Event-Structure
Das UI soll nun um eine zusätzliche Hilfe in Form eines Popups realisiert werden.
Erster Ansatz:
--
* Help-Button -> neuen Event -> SubVI aufrufen
hat folgenden Nachteil:
--
* Solange das SubVI offen ist ist mein Hauptprogramm blockiert.
Frage:
--
Wie kann ich dieses Problem besser angehen um letzlich den Event-Ansatz im Hauptprogramm beizubehalten und trotzdem ein unabhängiges Popup Fenster zu erhalten, welches beliebig geöffnet & geschlossen werden kann, ohne auf die Grundfunktion des Hauptprogrammes einfluss zu nehmen ?
Danke fürs reinschauen
Gruss
fidel
|
|
|
13.10.2008, 10:54
Beitrag #2
|
|
|
13.10.2008, 11:04
Beitrag #3
|
TSC
LVF-Team
Beiträge: 1.882
Registriert seit: Sep 2008
LV 2018 SP1
2008
EN
52379
Deutschland
|
Popup innerhalb Event-Based Programm
in den Eigenschaften für das SubVI sollte die Funktion MODAL deaktiviert sein, dann kannst du beliebig zwischen den beiden Frontpanels hin und herschalten.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
13.10.2008, 11:04
Beitrag #4
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
Popup innerhalb Event-Based Programm
ich mach das folgendermaßen:
die Struktur von meinem Hauptprogramm baut auf einer "queued Statemachine mit Consumer und Producer Loop" auf. Die Producer Loop ist die mit der Event-Struktur. In der Event-Stuktur aktiviere ich die User-Events.
Wenn nun ein MODALER Dialog aufpoppen soll, dann mache ich das in der Event-Struktur (per User-Event). Begründung: so lange ein modaler Dialog aktiv ist, kann kein Event auf dem Frontpanel auftreten. Darum kann ich bedenkenlos die Proucer Loop "locken", während die Consumer-Loop unbekümmert weiterläuft ...
|
|
|
13.10.2008, 12:24
Beitrag #5
|
fidel
LVF-Gelegenheitsschreiber
Beiträge: 247
Registriert seit: Aug 2006
8.00 // 8.2.1 // 8.5
2006
de
76185
Deutschland
|
Popup innerhalb Event-Based Programm
Ok ich sehe, ich sollte besser ausführen:
--
Mainprogramm:
* While-Loop
** Event-Structure
Ein Button innerhalb dem MainVI ist der Event "Getting Started" der, sofenr getriggert im Rahmen seines Event-Cases nur ein SubVI beinhaltet.
Daten müssen zwischen Main-VI und SubVI nicht hin-und-hergeschoben werden.
SubVI:
* While Loop
** Event Structure
Ein Quit button um das SubVI zu beenden, sowie sonstiger Info-Content auf dem Frontpanel des SubVI's.
Bzgl den Ideen:
############
@TSchAC:
Diese Einstellung alleine kann nicht die Lösung sein, da schon probiert. Muss wohl mit irgendwas anderem kollidieren.
@Kvasir:
warum sind mehrere Eventstrukturen problematisch ? Habe mich da (LabVIEW & EventS) selber reingearbeit, es bis dato nicht mit mehreren Eventstrukturen probiert. Der Ansatz war für mich nur naheliegend, weshalb ich ihn jetzt probiert habe.
>> parallel zur Hauptschleife laufende Schleife doch die Funktion erfüllen
den Part verstehe ich nicht um ehrlich zu sein.
Ja im Kern soll ne while loop innerhalb des SubVIS parallel zur While im Haupt-VI laufen. Bei mir sehst es bis dato jedoch so aus, als ob das Signal des SubVI'S erst nach schließen zurück ans HauptVI übergeben wird - why ever.
@i2dx:
Danke für den Input hilft mir so leider nicht, mangels Verständniss und Buzzwords die mir umbekannt sind. Trotzdem danke.
Es geht in diesem Fall auch nicht um einen Dialog der impliziert dass im Main-Frontpanel nichts passieren kann, da das SubVI nur informationen darstellen soll.
Danke nochmal an alle.
|
|
|
13.10.2008, 12:40
Beitrag #6
|
|
|
13.10.2008, 13:09
Beitrag #7
|
cb
LVF-SeniorMod
Beiträge: 1.731
Registriert seit: Feb 2006
2018SP1
2001
EN
40xxx
Deutschland
|
Popup innerhalb Event-Based Programm
' schrieb:@i2dx:
Danke für den Input hilft mir so leider nicht, mangels Verständniss und Buzzwords die mir umbekannt sind. Trotzdem danke.
Es geht in diesem Fall auch nicht um einen Dialog der impliziert dass im Main-Frontpanel nichts passieren kann, da das SubVI nur informationen darstellen soll.
hmpf ...
ich hab halt die englische Version von LV ... ok, nochmal von vorne:
klickst du (in LV) auf "neu" und dann auf:
dann hast du ein Beispiel für eine "queued Statemachine mit Consumer/Producer Loop" ...
dann aktivierst du noch bei der Event-Struktur die User-Events
der Dialog (das SubVI), der dir die Werte anzeigen soll, liegt dann in der Event-Struktur, wird geöffnet wenn das User-Event eintrifft und blockt nicht die "Hauptschleife" ...
|
|
|
13.10.2008, 13:14
(Dieser Beitrag wurde zuletzt bearbeitet: 13.10.2008 13:25 von fidel.)
Beitrag #8
|
fidel
LVF-Gelegenheitsschreiber
Beiträge: 247
Registriert seit: Aug 2006
8.00 // 8.2.1 // 8.5
2006
de
76185
Deutschland
|
Popup innerhalb Event-Based Programm
@ichselbst: Danke für das Muster - Leider kann ich 8.5 Beispiele nicht in 8.2.x laden.
@i2dx:
Vielen Dank - deutlich klarer. Werde den Ansatz mal versuchen, wobei er wohl einige Änderungen am bestehden Programm erfordern würde.
Mal sehn ob das wirklich Sinn macht.
Danke nochmal an euch beide
Gruss
fidel
|
|
|
13.10.2008, 14:49
Beitrag #9
|
Kvasir
LVF-Freak
Beiträge: 642
Registriert seit: May 2006
10
2004
DE_EN
0000
Oesterreich
|
Popup innerhalb Event-Based Programm
' schrieb:@Kvasir:
warum sind mehrere Eventstrukturen problematisch ? Habe mich da (LabVIEW & EventS) selber reingearbeit, es bis dato nicht mit mehreren Eventstrukturen probiert. Der Ansatz war für mich nur naheliegend, weshalb ich ihn jetzt probiert habe.
>> parallel zur Hauptschleife laufende Schleife doch die Funktion erfüllen
den Part verstehe ich nicht um ehrlich zu sein.
Ja im Kern soll ne while loop innerhalb des SubVIS parallel zur While im Haupt-VI laufen. Bei mir sehst es bis dato jedoch so aus, als ob das Signal des SubVI'S erst nach schließen zurück ans HauptVI übergeben wird - why ever.
Ok entschuldige. Vermutlich habe ich mich ein wenig zu kryptisch ausgedrückt.
Im Prinzip gleicht mein Vorschlag dem von I2dx. Ich würde sagen es ist die vereinfachte Version davon.
Du erstellst einfach in deinem HauptVi eine zweite Schleife, in die du dein PopUp - SubVi legst. Alles was in dieser Schleife passiert läuft dann unabhängig vom Rest (in der anderen Schleife). Solltest du zwischen den zwei Schleifen Daten übertragen müssen, dann nütze eine Queue.
I2dx Vorschlag ist im Prinzip die komplexere, aber elegantere und leistungsstärkere Variante derselben Idee.
Grüße
A few weeks of developement and testing can save a WHOLE afternoon in the library!
|
|
|
| |