Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hi,
Ich habe ein Menu VI, lauter Buttons welche ich jetzt mit den eigentlichen VIs verlinken möchte. Auf click soll dann das gewollte VI erscheinen.
Geht irgendwie nicht. Ich kann meine VIs nur als subVIs im Backpanel einbauen, hat zur Folge das entweder alle VIs sofort geladen werden, oder manueller doppelclick im Backpanel erforderlich.
Das muß doch auch aus dem Frontpanel funktionieren a la run URL...?????
Hilfe
Ich habe jetzt lange lange viel probiert, und es will nicht.
Egal wie ich die SubVIs call, das Menu-VI, welches gleichzeitig noch daten aquiriert, stopt jedesmal an der Stelle wo ich ein VI aufrufe.
Beim Support von NI hat man mir zu einer anderen Architektur im Blockdiagramm geraten.
Jetzt habe ich mich mit der Producer/Consumer Geschichte befasst, es soll aber auch nix gebacht werden.
Also habe ich jetzt pro SubVi einen while loop gemacht, also ca 20 loops in einem VI.
Es geht, ist aber keine elegante Lösung.
Hab schon ein Versuch gestartet dieses "Menu" in Flash&MySQL umzusetzten (data aquise über LV), dann öffnet sich aber pro VI eine LV Instanz, auch eine Sackgasse.
Trotzdem danke für eure Zeit!
Also ich führe meine SubVIs immer aus, nur bei den Einstellungen habe ich das "Show FP when called" weggeklickt. Das heist das SubVI läuft immer wird aber nicht angezeigt. Und durch das Property "OpenFP" (siehe Bild) öffne ich diese wenn ein Button vom Benutzer geklickt wird.
' schrieb:Also ich führe meine SubVIs immer aus, nur bei den Einstellungen habe ich das "Show FP when called" weggeklickt. Das heist das SubVI läuft immer wird aber nicht angezeigt. Und durch das Property "OpenFP" (siehe Bild) öffne ich diese wenn ein Button vom Benutzer geklickt wird.
Gruss, Eugen
Hallo,
im Prinzip lade ich meine VI's in aehnlicher Weise wie Eugen. Das zu ladende VI packe ich ein Case-Struktur. Wenn der Nutzer den Button fuer das jeweilige VI drueckt, wird das VI aufgerufen (CALL). Das zu ladende VI hat unter "VI Properties / Window Appearance / Customize Window Appearance" die Option "Show Frontpanel when called" gesetzt.
Das Problem bleibt leider bestehen:
ca 20 SubVis laufen im Hintergrung auch wenn sie nicht gebraucht werden. Das verlangsamt die VIs die man sehen möchte deutlich. D.h. es sollten auch nur die "sichtbaren" VIs den Processor belasten, Daten holen und anzeigen.
Dazu kommt das Problem bei der "nur ein Loop Architektur" das das Caller-VI seinen sequenziellen Prozess stoppt während das aufgerufene SubVi läuft.
Ich poste mal eine stark vereinfachte version hier zum download (LV 7.1). Dort habe ich für jede einzelne Aufgabe einen Loop gemacht, nur so konnte ich gleichzeitig aus einem VI andere SubVis callen (halt auch zwei oder mehr) und im gleichen VI weiter Daten holen und darstellen.
Wenn ihr versucht das mit nur einem Loop nachzubauen werdet ihr das Problem sehen. NI sagt es geht nur mit einer Consumer/Producer Architektur (siehe Templates) oder mit dem VI Server.
Menu_VI.zip (Größe: 26,68 KB / Downloads: 677)
kopiere dir die drei VI mal in einen gemeinsamen Ordner, und starte das "neu_Menu_Vi.vi"...
So sollte das funzen...hab damit auch schon mehrere VI gestartet und wieder gestoppt...oder hab ich das jetzt alles mis(t)verstanden, und so hattest du's auch schon probiert?
extrem großes Tennis
So hab ichs noch nicht versucht und muß ehrlich sagen das ich deine Technik auch noch nicht ganz begriffen habe, aber es funzt!
Habe auch schon mehrere VIs addiert und es geht. Vor allem gefällt mir das es richtig flüssig läuft und die SubVis ohne Verzögerung starten und arbeiten. Ich hoffe es läuft auch noch so wenn das Menu noch viel komplexer wird.
Ich schau mir die Dinger jetzt mal genauer an, besonders das Open VI.
Wenn du noch verraten könntest wie du auf deine Lösung gekommen bist oder kurze Kommentare zu den einzelnen VIs posten könntest, so a la Tutorial wär das super. Man lernt nie aus.
Nee...hab ich auch mal von meinem ehemaligen Chef gelernt, und ein paar Anpassungen vorgenommen, die sich mit der Zeit als notwendig erwiesen haben...
Hm, Kommentare...es handelt sich um VI Server Funktionalität, ganz simpel...Front Panel öffnen, VI starten, im gestarteten VI das FP nach Beendigung wieder schließen...that's it! Wichtig ist, dass die zu startenden VI's im richtigen Ordner liegen (wie das "Über-VI"), und dass sie eben nur bei Bedarf geladen werden, weil sie nicht innerhalb des Codes sind! In LV8 geht das glaub ich einfacher, habs aber noch nicht getestet...
Happy Coding!
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)
Also ich habe mir auch die drei VIs angeschaut. Solches Starten habe ich bis jetzt noch nie gebraucht, weil ich an die SubVIs die Daten vom HauptVI übergebe und dort anzeige. Die SubVIs laufen bei mir nur als Hilfsfenster für die Anzeige der Daten, die in das Hauptfenster nicht passen.
@Achim
Kann das sein, dass das Starten durch das Invoke-Node ist eigentlich auch überflüssig? Weil man es in SubVI-Properties einstellen kann (Run when opened).
Wenn ja, dann ist eigentlich das ganze viel einfacher, siehe mein Beitrag zum Thema oben. Also man braucht nur das Öffnen des FPs.
Das mit Referenzen und Pfaden ist eigentlich auch unnötig, weil man diese durch Static VI Reference ersetzen kann.