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!
Ich baue im Rahmen eines Projektes ein kleines LabVIEW-Programm und möchte nun die Benutzeroberfläche benutzerfreudlich einrichten.
Hierzu möchte ich verschiedene Szenarien (A, B und C) vorgeben, die der Benutzer anwählen kann.
Danach kann er Zeiträume (1, 2 oder 3) wählen und im Anschluss mit Schiebereglern noch Werte einstellen.
Sind alle Werte eingestellt muss der Benutzer nurnoch auf Start klicken und die Eingabe wird ausgeführt.
Nun zu meinen Fragen:
1. Ist es möglich zum Beispiel die Skalen der Schieberegler an die Auswahl der Szenarien zu koppeln? Damit meine ich, dass bei Szenario A Werte von 1-10, bei Szenario B Werte von 10-100 und bei Szenario C dann Werte von 100-1000 zur Auswahl stehen.
Wie könnte sich das bewerkstelligen lassen, bzw mit welchem Tool kann ich solche Dinge im Blockdiagramm festlegen?
2. Es soll pro Kategorie immer nur eine Auswahl möglich sein, d.h. wenn ich Szenario A anwähle und direkt danach Szenario B soll A wieder "deaktiviert" werden. Das ganze Programm soll dauerhaft im "run"-Modus laufen, ist es da dann überhaupt noch möglich solche Veränderungen auf der Benutzeroberfläche vorzunehmen?
3. Ich hab die Eingabe mit A, B und C schonmal versucht mit einigen Case-structures die in eine Whileschleife eingebettet waren versucht, hierbei ergab sich aber das Problem, dass zwar die Anwahl von A, B und C funktioniert während das Programm läuft, aber nach jedem Schleifendurchgang werden die Knöpfe resettet und die Auswahl verschwindet bzw springt immer auf die Ausgabe von A. Das liegt daran, dass ich in der innersten Case-structure im false case einen Pfad angeben musste (hier der Pfad A). Ich würde aber gerne immer die zuletzt gewählte Auswahl angezeigt haben und lassen bis eine neue Auswahl erfolgt.
Ich weiß nicht ob meine Vorstellungen so überhaupt umsetzbar sind, freue mich aber über alle Vorschläge und Anregungen.
also deine Vorstellungen sind nicht utopisch. Man kann fast alles zur Laufzeit ändern. Das Zauberwort heit PropertyNode oder auch Eigenschaftsknoten. In Verbindung mit einer Eventstructur stehen dir alle Wege offen. Ich habe dir mal ein kleines Beispiel gemacht. Jedes Control oder jeder Indicator hat direkte PropertyNodes. Du kannst aber auch gleiche Typen über die Referenzen zusammenfassen und gleich behandeln. Schau dir das Beispiel an. Dort habe ich ein paar Ideen reingesteckt.
1. ist es denn möglich die verschiedenen Abfragen erst dann auszuführen wenn zum Beispiel ein "Berechnen" Button gedrückt wird?
Momentan ist es ja so, dass sofort beim drücken der Buttons A, B oder C das jeweilige Eigenschaft ausgeführt wird.
2. zum Thema PropertyNode... kann man bei Graphen einstellen, dass der Graph für negative y-Werte z.B. rot und für positive Schwarz dargestellt wird?
(09.03.2012 11:34 )S_D schrieb: 2. zum Thema PropertyNode... kann man bei Graphen einstellen, dass der Graph für negative y-Werte z.B. rot und für positive Schwarz dargestellt wird?
Nein, geht nicht. Das musst du selber machen, indem du deine Werte in 2 Plots aufteilst.
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!
Wie kann ich denn die Daten anständig aufteilen?
Ich hab da jetzt einige Sachen mit case und event Strukturen versucht, aber ich stoße ständig auf Probleme was die Datentypen betrifft. Ich stehe grad ziemlich aufm Schlauch.
Die beigefügte Schleife macht so ungefähr das was ich will, aber ich wusste nicht wie ich die false Weitergabe jeweils wählen sollte, desshalb wird da jetzt erstmal nur eine 0 weitergegeben, aber das sieht dann im Diagramm natürlich unschön aus.
Kann mir jemand eine elegantere Möglichkeit (vielleicht PropertyNode?! - komme damit noch nicht so gut zurecht) zeigen?
Anzeige
09.03.2012, 17:35 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2012 17:36 von GerdW.)
Quickfix: gib statt der Null ein "NaN" weiter, der Plot kommt damit prima zurecht...
Besserer Anderer Fix:
Statt Autoindizierung hier ein Schieberegister verwenden. Im jeweiligen TRUE-Case baust du dann mittels BuildArray deine Daten zusammen, im FALSE-Case wird das Schieberegister einfach durchgeleitet...
Beide haben ihr Vor- und Nachteile, musst du mal ausprobieren!
P.S.:
Man kommt natürlich mit einer einzigen Case-Struktur aus, da ja in deinem Fall beide Cases genau entgegengesetzt sind (>=0 und <0)...
Hey GerdW,
danke für die beiden Tipps. Das mit dem "NaN" funktioniert soweit, mit dem Schieberegister hab ich noch ein kleines Problem, weil sich der Caseselector Über die Typen beschwert weil ohne Indizierung ein 1D-array of boolean reinkommt und er nur ein boolean haben will.
Zu meiner anderen Frage:
Zitat:1. ist es denn möglich die verschiedenen Abfragen erst dann auszuführen wenn zum Beispiel ein "Berechnen" Button gedrückt wird?
Momentan ist es ja so, dass sofort beim drücken der Buttons A, B oder C das jeweilige Eigenschaft ausgeführt wird.
Damit meinte ich soetwas wie eine Warteschlange, also man gibt verschiedene Angaben und erst wenn man auf 'Calculate' klickt werden die Eingaben abgearbeitet.
eine Möglichkeit um "Warteschlangen" zu realiseren ist eine State Machine/Zustandsmaschine. Entweder du kannst im ExampleFinder nach State Machines suchen oder mal mit dem Templates von Labview rumspielen. Unter File->New...->From Template->Frameworks->Design Patterns findest du die Queued Message Handler State Machine. Die könnte eine Lösung sein. Bau einfach in den Default Case deine Eventstruktur rein.
Ich verwende in einigen Projekten die State Machine von JKI.net (http://jki.net/state-machine). Vielleicht ist das am Anfang einmal etwas mehr arbeit sich da reinzuarbeiten, aber danach hat man eine gute Grundlage für viele Projekte.
Danke Tschirno für den Tipp, also so ganz erschließt sich mir das noch nicht mit diesen State Machines, aber ich knie mich mal rein.
Noch eine Frage (sorry, ich will nicht lästig sein):
Ich habe diese Zeitsteuerung nochmal via Event Structures versucht zu realisieren. Ich habe im Forum herausgefunden, dass es die Möglichkeit gibt im Bearbeitungsmenü der Event Structure "Lock front panel until this event case completes" deaktivieren kann und das habe ich dann auch direkt mal gemacht. Jetzt kann ich zumindest mal die Verschiedenen Buttons durchklicken, aber ich habe jetzt das Problem, dass wenn ich ihm einmal ein Szenario (A, B, C) und Jahr vorgegeben habe und dann Resetten will immer das zuerst gewählte Jahr weiterverwendet wird und ich auch keine weiteren Änderungen daran vornehmen kann.
Zudem hab ich in dem Programm wahrscheinlich wieder paar blöde Fehler reingebaut, also Sachen doppelt und dreifach reingebaut wo auch die einfache Ausführung gereicht hätte.
Kann mir vielleicht jemand sagen was ich da falsch gemacht habe?