Mein Problem:
Ich habe 4 VIs geschachtelt. die unterste soll beim klicken auf einen button auf dem bildschirm erscheinen und sich beim drücken eines weiteren buttons wieder schließen.
normal im programm hab ich das durch die eventstructur realisiert und die vi da rein gepackt. dann mit value change des geünwschten buttons aufrufen lassen.
das funktioniert aber in der sub vi nicht.. i
ch denke weil ja bei jeden durchlauf die vi gestartet wird, der alte wert des buttons aber nicht gespeichert ist in der sub vi, deswegen kein value change???
dann hab ichs porbiert mit case strukture und den alten wert in der vi einer anderen variablen zugewisesn und die dann verglichen.. aber das funktioniert auch nicht.
kann mir jemand helfen?
Hallo Kex2006!
Da ich Schwierigkeiten hatte deinen Ausführungen zu folgen, muss ich mal nachfragen. Läuft das SubVI denn schon zu dem Zeitpunkt, wo das Frontpanel dessen geöffnet werden soll?
Wenn du den Pfad zu diesem VI hast kannst du dir mittels "Open VI Reference" die Referenz des VIs geben lassen und dann mittels Property-Node mit der Eigenschaft "Frontpanel Window -> Open" das FP öffnen bzw. schließen. Unten mal ein Bild der prinzipiellen Vorgehensweise. Aus meiner Sicht ganz wichtig am Ende unbedingt die Referenz auch wieder schließen, so fern du sie nicht mehr benötigst oder bei Beendigung deines Programmes.
So hoffe konnte dir vielleicht weiterhelfen. Falls nicht zeig mal bitte ein Bild deines Codes an der Stelle, wo das FP geöffnet werden soll.
Schöne Grüße und gute Nacht
Falk
Irgendwie erklär ich schlecht.. niemand versteht was ich meine
Hallo, mein Problem ist glaub viel trivialer:
Der benutzer soll aufm FP einen schalter drücken, die sub vi soll sich öffnen und auf knopfdruck wieder schließen. also total einfach, nur mein problem ist halt das die vi eben in 2 andere subvi geschachtelt ist.
also ober Vi --> sub vi 1 --> sub vi2 --> subvi3 enthält sub vi 4, die bei bedarf geöffnet werden soll.
Diese Vis werden einfach nach der reihe durchlaufen und mittendrin taucht dann die VI auf, die eben geöffnet werden soll wenn der schalter betätigt wurde. sonst einfach übergangen werden.
hier im forum hab ich was gesehen:
kann ich mit einer vi server referenz den wert eines schalters einer vi in eine andere "übertragen"?
und kann ich den schalter ( der die vi geöffnet hat) dann gleichzeitig mit dem schließen der Vi wieder auf false setzen?
zur erklärung für die blöden fragen: arbeite erst seit 3 wochen mit LabVIEW...
Du musst das 4. te VI als Dialog in den Einstellungen definieren, dann wird das Front Panel angezeigt, sobald es aufgerufen wird.
Übrigens, VI = virtuelles Instrument, also DAS VI, nicht DIE VI!
Mein Problem beim aufrufen ist die Bedingung, die dazu führt dass DAS vi (

) aufgerufen wird.
bisher bei mir:
der taster befindet sich in der ersten vi wird dann durch 3 vis geschleift und geht dann auf eine event structure mit value change. so soll das vi aufgerufen werden.
geschleift bedeutet ich nehme die bool variable und führe sie auf eine bool control bei der sub vi. ohne property node oder irgendwas!!! ich schätze aber ich müsste genau sowas verwenden?!?!
so klappt das aber leider nicht.
außerdem will ich den schalter nachdem die vi wieder geschlossen wird wieder direkt auf false setzen.
hoffe ich hab mich halbwegs verständlich ausgedrückt...
Ja, ich denke ich verstehe. Aber Bedingung muss nicht mit einer Event Struktur zu tun haben. Nimm doch lieber eine Case-Struktur und führe deine Bedingung in Form eines boolschen Controls (Eingang) bis zum SubVI Aufruf. Genauso, führe die Bedingung zum Rücksetzen deines Schalters im HauptVI dürch die drei verschacjtelte VIs wider zurück - durch einen boolschen Indicator (Ausgang).
und dann mit local variable die werte zuweisen?
juhuu es hat geklappt.
weiteres Problem:
ich habe.. ca 200 Räume. Für jeden Raum soll es einen Taster geben damit dann eben das sub vi des entsprechenden Raums aufgeht.
heißt das für mich 200 variablen einfügen. in array zusammenzufügen durch alle vis zu schicken. am schluss das neue array wieder auseinander zu nehmen und die neuen werte jeweils local variables der bool variablen zuzuweisen?
das mit der local variable ist damit der schalter mit der die sub vi geöffnet wird nach dem schließen auch wieder auf false ist..
was bedeuten würde 400 variablen einzufügen und zu verdrahten...
Ich dachte das Problem mit lokalen Variablen wurde von dir schon erkannt. Du hast doch den Unterschied zwischen Lokalen Variablen und Schieberegister mit Array schon gesehen und verstanden. Vergiss einfach lokale Variablen. Versuche komplett ohne lokalen Variablen zu programmieren. Es geht, das kann ich dir bestätigen.
Ja aber wenn ich doch 200 verschiedene knöpfe hab, die jeweils was anderes auslösen sollen, dann muss es die doch auch alle geben und ich muss die doch einzeln verbinden..