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!
Hallo,
habe da mal eine Frage zu Subpanel und Splitter Pane (grundsätzlich habe ich die Thematik verstanden, dachte ich :-).
Ich habe jetzt eine Anwendung bei welcher das main.vi unterteilt ist mittels splitter panes und im center pane
ein Subpanel mit einem subvi geladen wird. Das Subvi ist wiederum mit Splitter panes versehen.
Jetzt gibt es zwei Schwierigkeiten:
1. Das geladene Subvi im subpanel ist blockiert!?
2. Das Tab Control welches hinter dem Subpanel liegt verschiebt sich wenn das subvi im subpanel geladen ist und das main.vi wird in der Grösse verkleinert wird (z.B. ganz schmal) und dann wieder maximiert wird und das Subvi beendet wird.
Ich denke, dass dir die Event-Struktur den Zugriff auf das Sub-Panel blockiert.
Du kannst den Sub-Panel Aufruf in eine parallele Schleife auslagern oder die Event-Struktur entsprechend konfigurieren.
Beim Event "SubVi in Subpnl" den Hacken bei "Lock Panel" entfernen (siehe Bild).
In einer Event-Struktur gehört nichts gemacht, was eine undefiniert lange Zeitspanne in Anspruch nehmen könnte. Die Zeitspanne, die der Event-Code verbrauchen darf, sollte gegen Null gehen. Es ist also per se schlecht, im Event den SubVI-Aufruf mit "Warten bis beendet = true" auszuführen.
Man kann schon im Event das SubVI starten, dann aber mit "Warten bis beenden = false" - was selbstverständlich eine Anpassung des Datenflusses der SubVI-Referenz bedeutet.
Oder man schickt eben eine Message an eine parallele While-Schleife, die sich alleine nur um die Aufrufe der SubVIs in SubPanels kümmert.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
(07.09.2016 09:10 )IchSelbst schrieb: In einer Event-Struktur gehört nichts gemacht, was eine undefiniert lange Zeitspanne in Anspruch nehmen könnte. Die Zeitspanne, die der Event-Code verbrauchen darf, sollte gegen Null gehen.
- ... ok das mit dem "Lock Panel" wusste ich nicht.
- das mit der event struktur ist mir schon klar das dort code mit max 100...200ms sein sollte, es ist nur ein Test vi mit dem ich das eigentlichen Problem darstellen wollte
- "Problem Nr.2":
"Das Tab Control welches hinter dem Subpanel liegt verschiebt sich wenn das subvi im subpanel geladen ist und das main.vi wird in der Grösse verkleinert wird (z.B. ganz schmal) und dann wieder maximiert wird und das Subvi beendet wird."
Ich habe die Test Vis noch einmal angepasst menubar ändert und splitter pane settings.
Weshalb verschiebt u. ändert sich Grösse entweder vom Tab Control oder vom Subvi?
(07.09.2016 10:08 )GT123 schrieb: "Das Tab Control welches hinter dem Subpanel liegt verschiebt sich wenn das subvi im subpanel geladen ist und das main.vi wird in der Grösse verkleinert wird (z.B. ganz schmal) und dann wieder maximiert wird und das Subvi beendet wird."
Ich kann das nicht nachvollziehen - weder mit 2014(32Bit) noch mit 2015(32Bit) (Win7/64-i7/6500)
Zitat:Weshalb verschiebt u. ändert sich Grösse entweder vom Tab Control oder vom Subvi?
Ganz selten kommt es vor, dass das SubPanel verschoben ist - die Sache ist also nicht wiederholbar nachvollziehbar.
Ich sag mal so:
Es ist mir schon immer negativ aufgefallen, dass LabVIEW nicht gerade die beste Runtime für das Refreshment der Anzeigeelemente besitzt. Ich verwende daher nur noch nicht-scalierbare Fenster und Graphiken und Arrays in Standard-Ausführung.
LabVIEW ist ja auch nicht dazu da, Anzeigeelemente in jeder erdenklichen Situation richtig darzustellen. Primäre Aufgabe ist das Sampeln (und Ausgeben) von Daten mittels NI-Karten sowie das Handling dieser Massendaten - aber das können sie richtig gut ...
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Es ist IMHO keine gute Idee, ein VI in ein Subpanel hineinzuladen, wenn das Frontpanel auf Grund der Menge der Elemente und enthaltenen Subpanels (inkl. irgendwelcher Scaling-Anpassungen) dann gar nicht reinpasst. Da muss dann irgendwas schief gehen und sich was verschieben. Das mit dem Autoscaling hat leider seine Grenzen in LabVIEW, in der Regel klappt das nur sauber mit 1 Element pro Pane.
Leg mal im ersten Schritt eine sinnvolle Minimalgröße für das Main-VI fest (unter Rechtsklick auf Icon -> VI Properties -> Window Size).
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ok, danke für Eure Einschätzung.
Ich würde es dann mal so lösen, indem ich das Tab Control auch in ein Subvi lege, dann entsprechend die Subvis im Subpanel wechseln.
Somit wäre es dann nur noch das Subpanel also ein Control welches ich mit fit to pane anpasse.
.... das Tab Control in ein Subvi legen ist doch nicht gut, da mein main.vi welches aktuell das Tab Control besitzt eine Event Struktur besitzt welche unzählige Events des Controls abarbeitet...
Ich steh grad auf dem Schlauch und mir fällt nicht ein wie ich das am besten lösen soll.
Der Ursprung weswegen ich das mit der "fit to pane" Thematik angehe ist eine Applikation in der
aktuell im main.vi das TabControl liegt mit allen Einstellungen zu einer Testablauf.
Der Testablauf wird im Subpanel eingeblendet (eben aderes vi), auch andere Vis können über das Subpanel
eingeblendet warden ohne das x-Panel dem User geöffnet warden. Und diese Subpanel wird bei Tesablauf eingeblendet,
ansosnten sieht man das Tab Control.
Nun ist es aber so, dass Anlagenrechner 4:3 u. per Remote 16:9... d.h. verschieden Auflösungen vorliegen.
Es soll jedoch immer sinnvoll angpasst warden, z.B. Graphen will man ja immer gross haben...
Ich kenne diese "fit to pane" Thematik von java was ich dort sehr angenehm u. einfach finde und auch sehr stabil läuft.
(07.09.2016 14:03 )GT123 schrieb: ... eine Applikation in der aktuell im main.vi das TabControl liegt mit allen Einstellungen zu einer Testablauf.
Der Testablauf wird im Subpanel eingeblendet (eben aderes vi), auch andere Vis können über das Subpanel eingeblendet warden ohne das x-Panel dem User geöffnet warden. Und diese Subpanel wird bei Tesablauf eingeblendet, ansosnten sieht man das Tab Control.
Wenn ich das alles richtig verstanden habe - und du es auch so meinst, wie ich es verstanden habe - dann muss ich sagen: Ein guter Ansatz! Dieser Ansatz fördert zwei wichtige Programmierparadigmen: Code-Minimierung (im Main-VI, das das Subpanel enthält) und Datenkapselung (Daten sind im Main nicht verfügbar, obwohl sie dort angezeigt werden).
Zitat:Nun ist es aber so, dass Anlagenrechner 4:3 u. per Remote 16:9... d.h. verschieden Auflösungen vorliegen. Es soll jedoch immer sinnvoll angpasst warden, z.B. Graphen will man ja immer gross haben...
Streiche dieses Feature und mach das Fenster so groß, dass es in beide Auflösungen passt. Auch ich habe früher mal gedacht, dass ich das Frontpanel schön haben will. Für schöne Fenster ist LabVIEW aber (immer noch) nicht geeignet. Schöne Fenster bedeuten nur viel, nicht gerechtfertigten Programmieraufwand.
Zitat:Ich kenne diese "fit to pane" Thematik von java was ich dort sehr angenehm u. einfach finde und auch sehr stabil läuft.
Solche Sachen und viele, viele mehr gab es vor zwanzig Jahren schon in Delphi - zu Zeiten als anderen Pogrammiersprachen noch in den Kinderschuhen steckten. - Ich schweife schon wieder ab: Du kannst ja mal versuchen in Java Daten zu sampeln ...
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).