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 habe in einem Sub-VI einen Cluster von 7 Tastern erstellt. Dieser ist als Eingang des Sub-VI's definiert. Ich füge dann also das SV ins Hauptprogramm ein und erstelle am Eingang mit Create->Control einen identischen Cluster. Bei Ausführung des Hauptprogramms bemerkt das Programm allerdings nicht das drücken der Taster und steht folglich. Wenn ich in den Einstellungen für das SV "Show front-panel when called" aktiviere, so wird beim Programmstart immer das Frontpanel des SV aufgerufen und das Programm funktioniert dann soweit wie es soll. Ich habe die Vermutung, dass es etwas damit zu tun hat, dass der Tasten-Cluster sich in einer While-Schleife befindet. Ich habe jedoch zu dieser noch keinen funktionsfähigen Ersatz gefunden.
So kann das auch nicht funktionieren. Gewoehn dir am besten mal an zum debuggen die Gluehbirne zu benutzen. Dann waerst du auch von selbst drauf gekommen, dass das so nicht gehen kann.
Wie ist der Datenfluss in deinem Programm ?
- Sobald du dein config panel.vi startest wird das subvi aufgerufen und die werte, die in dem cluster stehen (die default werte = ueberall falsse) uebergeben.
Was macht das SubVi ?
- Sobald das subvi aufgerufen wird rennt die while schleife los. Da aber am eingang immer die selben werte stehen (du rufst das subvi ja nur einmal auf von deinem "haupt vi") hast du dir ne nette endlosschleife gebastelt.
Wie kannst du das ganz einfach um bauen, damit es funktioniert ?
- Subvis sollten so einfach wie moeglich gehalten werden = Eingabewert wird verarbeitet zu Ausgabewert. Wenn du an der Stelle ne schleife brauchst, dann hat die meiner Meinung nach nix in dem subvi zu suchen (wuerde vielleciht mit n bisschen umstand auch gehen aber nicht so). Mach die Schleife ins hauptvi, so dass fuer jeden schleifen durchlauf das subvi einmal aufgerufen wird. Und dann ersetzt du bitte noch die while schleife durch eine event loop, so dass das subvi nur aufgerufen wird, wenn sich an den controls auch was geaendert hat (dann verbrauchst du nicht mehr 100% prozessorleistung fuer eine bloede schleife)
Erstmal Danke und.......Asche auf mein Haupt.
Event Case kannte ich bisher nicht, bzw. bin nicht drauf gekommen das mal zu benutzen, aber es sieht so aus als ob sich damit einiges Vereinfachen lässt.
sry
du musst die event case struktur nicht anstatt, sondern zusätzlich zur while schleife benutzen.
so sieht übrigens fast immer mein 'haupt vi' aus, bevor ich irgenwas anfange zu programmieren : eine while schleife in der ne event struktur ist mit einem event für nen 'stop' button, der an die loop condition angeschlossen ist.
Es ist anzunehmen, daß Du mit dem Programm erreichen willts, daß nur immer ein Knopf gedrückt werden kann. Wenn das der Fall sein sollte, dann ist das
1.) schief gelaufen, denn selbst wenn es funktioniert funktioniert es immer noch nicht so wie gewollt, und
2.) brauchst du dafür nichts zu machen, denn das was Du brauchst gibt es unter "Bedienelemente/ Boolsch/ OptionMenü".
Tips:
a) "ersetzen" verwenden, damit Du die gewünschte Buttonform erhälst
b) "Element hinzufügen" oder Kopieren verwenden, um 7 Buttons zu erhalten
c) rechte Maustaste "keine Option zulassen" ankreuzen oder auch nicht, wenn auch alle Knöpfe herausgedrückt zugelassen werden soll oder nicht
Die Sache mit dem Optionsmenü gibt es wahrscheinlich erst seit Version 8. In meinem LabVIEW (7.1) kann ich dies unter den boolschen Elementen leider nicht entdecken.