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!
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Dank Eurer Hilfe hab ich es geschafft, ein SubVI in einem SubPanel einzubinden und mit dem Ergebnis bin ich sehr zufrieden. Dafür möchte ich mich nochmal bei Euch bedanken.
Eine Frage hab ich aber noch - es geht um die Referenz des SubVIs. Das Programm soll später compiliert werden. Wenn ich die Funktion "Statische VI-Referenz (Funktion)" verwende und dort das VI-Piktogramm hineinschiebe - ist dann das Compilieren des Hauptprogrammes später so möglich oder könnte es Probleme geben, auf die ich an dieser Stelle schon achten muss? Oder ist es besser, mit Pfaden zu arbeiten? Bei der von mir gewählten Variante hätt ich den Vorteil, wenn ich den Namen mit dem Projektexplorer verändere oder in ein anderes Verzeichnis verschiebe, dann passt der die Pfade meiner Meinung nach automatisch an, bin mir da grad aber nicht so sicher.
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Hi,
als Alternative zu den SubPanels könntest du die Graphen auch auf nem großen TabControl mit X Seiten platzieren...und das TabControl dann "transparent" machen und die Reiter ausblenden.
Nachteil: Du musst den zugehörigen Code für die verschiedenen Seiten im Haupt-VI verwalten...
A.
"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)
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Hallo Hasenfuss,
Zitat:Wenn ich die Funktion "Statische VI-Referenz (Funktion)" verwende und dort das VI-Piktogramm hineinschiebe - ist dann das Compilieren des Hauptprogrammes später so möglich oder könnte es Probleme geben, auf die ich an dieser Stelle schon achten muss?
Statische Referenzen gelten als Abhängigkeit und werden mit in die EXE kompiliert (gesundes Halbwissen meinerseits...).
Zitat:Oder ist es besser, mit Pfaden zu arbeiten?
Jein. Kommt drauf an...
Per Pfad nachgeladene VIs gelten nicht als Abhängigkeit ("Dependency") und müssen vom Programmierer selbst in die EXE inkludiert (oder aus einem definierten Verzeichnis nachgeladen) werden. Du hättest den Vorteil, dass du solche subVIs nachträglich ändern kannst, ohne die EXE neu zu kompilieren...
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Ich habe es jetzt so hinbekommen, dass ich ein SubVI in einem Unterpanel einbinden und starten kann. Starten tue ich es so wie hier auf dem Schaubild. Ich habe nicht - wie zuerst - den Methodenknoten VI ausführen genommen, weil dort in der Hilfe stand, dass asynchrones Aufrufen besser sein sollte. Das Hauptprogramm ist nämlich an dieser Stelle immer hängen geblieben und ging nicht weiter. Dann gab es dort die Möglichkeit "Warten bis beendet" umzuschalten, dort aber dann der Hinweis mit dem asynchronen Aufruf. Beende ich mein Hauptprogramm, dann geht auch das VI aus dem Unterpanel weg. Starte ich das Hauptprogramm erneut, dann erscheint zwar das SubVI jedoch scheint das SubVI nicht beendet worden zu sein, sondern es verharrte so im Speicher, obwohl ich im HauptVI einen Melder "Beenden" habe, der eigentl. hätte dafür sorgen müssen, dass alle Schleifen in dem SubVI dann auch beendet werden sollten.
Den Quellcode im Blockdiagramm zum Einbinden des VIs in das Unterpanel im Hauptprogramm habe ich auch in einem SubVI ausgelagert.
Meine Frage - gibt es die Möglichkeit, ein SubVI auch zu beenden - wie asynchrones Aufrufen? Es gibt zwar noch im Methodenknoten VI abbrechen, dort steht aber in der Hilfe, dass das nur für Hauptprogramme funktioniert und bei SubVIs:
" ... Bricht die Ausführung eines Haupt-VIs ab.
Diese Methode gibt den Fehler 1000 aus, wenn sie für ein SubVI aufgerufen wird. Anderenfalls entspricht diese Methode in etwa dem Betätigen der Schaltfläche Ausführung abbrechen in der Symbolleiste.
..."
Also scheint diese Funktion dafür nicht geeignet zu sein.
Da das SubVI also noch im Speicher hängt - ist das ein Hinweis darauf, dass eine Schleife vlt. doch noch nicht richtig beendet wurde? Oder gibt es noch andere Ursachen?
PS: In dem Bild ist auch die Methode "VI Abbr." vorhanden, die hab ich aber nur kurz eingefügt, um an den Hilfetext zu kommen.
Anzeige
13.05.2013, 11:54 (Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2013 11:54 von GerdW.)
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Hallo Hasenfuss,
das "Abbrechen" eines VIs ist doch immer unsauber...
Kannst du nicht eine (F)GV/Notifier/o.ä. nehmen, um dem subVI mitzuteilen, dass es sich sauber (!) beenden soll?
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Hallo GerdW,
Du hast recht, "unsauberes Beenden" ist nicht schön. Das SubVI hat auch einen Zustandsautomaten mit einer Eventstruktur. Leider hing die Schleife in der Eventstruktur immer noch fest und hat auf ein Ereignis gewartet, denn mit einem Notifer konnte ich kein Event auslösen. Ich hatte zwar ein manuelles Beenden per Knopf in dem SubVI, diesen Knopf hab ich aber unsichtbar gemacht, weil ich den beim Einfügen in das Unterpanel des Hauptprogramms nicht haben wollte. Dank Deines Hinweises konnte ich Erfahrungen mit den Benutzerereignissen sammeln und ich habe parallel zu dem Beenden-Knopf ein Benutzerereignis Beenden eingebaut, auf das das SubVI nun auch reagiert und seine Prozesse sauber beendet - und seit dem funktioniert alles wunderbar. Vielen Dank für Deine Hilfe und die Hilfe all der anderen :-), die mich auch mit Tipps und Hinweisen untersützt haben.
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Dank Eures Hinweis mit den Trennbalken habe ich es jetzt binbekommen, einen Graphen dort hineinzusetzen, der verschiebbar ist. Durch das Setzen einer Mindestgröße kann ich verhindern, dass der Graph zu klein wird.
Der eigentliche Graph ist aber in einem SubVI. Das UnterPanel ist soweit auch so, dass es sich in der Größe anpasst. Leider passt sich nun nicht der Graph in dem SubVI mit an. Wie kann ich das hinbekommen? Mein erster Ansatz geht nun dahin, dass ich die aktuelle Größe nach einer Verschiebeaktion des UnterPanels ermitteln könnte und dann unter Zuhilfenahme des Eigenschaftknotens "Maße-Bereichshöhe/Bereichsbreite) vom Graphen die aktuelle Größe setze. Dann muss ich aber die Werte zwischen SubVI und HauptVI wieder hin- und herschieben - geht auch wieder über glob. Variablen .... Habe ich in dem SubVI aber wieder eine Eventstruktur, dann müsste ich entweder in einer neuen Schleife durch Pollen regelmässig die aktuelle Größe aktualisieren oder mittels eines Benutzerevents in dem SubVI einen State auslösen, der die Anzeigengröße anpasst.
RE: Gestaltung einer Benutzeroberfläche mit Graphen
Hallo Hasenfuss,
das Subpanel zeigt nur ein FP (bzw. einen Ausschnitt davon!) eines anderen VIs an. Ich persönlich würde nicht wollen, dass sich auf dem FP dieses anderen VIs etwas ändert, weil sich der gezeigte Ausschnitt ändert...
Andere Idee:
Du zeigst immer nur Graphen in diesem Subpanel an? Dann trenne doch Anzeige und Rechnung voneinander! Ein Graph (ohne Subpanel), der immer Daten aus einer (F)GV o.ä. anzeigt. Und beliebige subVIs im Hintergrund, die Daten bereitstellen - ohne direkt ins MainVI per Subpanel eingebunden zu sein...