Hi Leute,
angestoßen durch mein experimentieren mit der Menubar bin ich nun basteln mit der Case Structur.
Mein Problem ist folgendes:
Ich habe 8 Knöpfe (Boolean) und jeder Knopf soll eben ein anderes Unterprogramm ausführen. Jetzt kann ich natürlich einfach hingehen und dazu 8 Case Structures aufmachen und jedes mal in den "True Case" das Unterprogramm hineinsetzen.
Nun habe ich aber gesehen, dass man (wie der Name sagt) verschiedene Fälle vorgeben kann. Sprich kann ich nicht in *einer* Case Structure verschiedene Fälle vorgeben a là "Knopf1", "Knopf2", etc. und dann die Booleans noch damit verbinden?
Also bei z.B. bei dem Arbeiten mit Menubar muss man ja die ganzen Items mit dem Befehl "Insert Menu Items" in einen String packen.
Geht das bei meinem vorhaben ähnlich? Dass ich mir irgendwie einen Array oder String baue und den dann an das "Fragezeichen" der Case Structure hänge?
Cheers.
Hier ein Bsp. (gab's hier auch mal mit 2 Cases von Lucki):
[
attachment=13667]
Gruß Markus
Äh, danke.
Nur mein LabVIEW 6.1 kriegt das nicht auf.
Kannst du mir nen Screenshot vom Blockdiagramm hochladen? Das wäre super nett!
Cheers.
Im Screenshot siehst Du nicht viel.
Im Prinzip ersetzt Du Radio Buttons mit Tastern und fragst den Ausgang Deiner 8 Radio Buttons im Case ab.
Am besten wäre es, wenn es Dir jemand runterspeichern könnte.
Gruß Markus
' schrieb:Äh, danke.
Nur mein LabVIEW 6.1 kriegt das nicht auf.
Kannst du mir nen Screenshot vom Blockdiagramm hochladen? Das wäre super nett!
Cheers.
Wenn ich das richtig recherschiert habe, dann sind Radio Buttons eine neue Errungenschaft von LabVIEW 7.1 gewesen?
Hat sich für mich also auch erledigt.
Cheers.
' schrieb:Wenn ich das richtig recherschiert habe, dann sind Radio Buttons eine neue Errungenschaft von LabVIEW 7.1 gewesen?
Hat sich für mich also auch erledigt.
Du kannst es auch so machen.
Coole Sache, danke!
Also wenn ich das richtig verstehe, dann sucht LabVIEW einfach wo in dem Array das True steht und die Nummer des Eintrags kann ich das als "Case" ausführen.
Jetzt habe ich das mal versucht nachzubasteln und habe da noch ein paar Fragen:
Wenn ich das richtig sehe, dann wird bei jedem Durchlauf der Schleife auf jeden Fall der "Default" Case ausgeführt. Das heißt, wenn ich 8 Knöpfe habe muss ich einen Array mit 9 Einträgen basteln wobei der erste Boolean sowas wie eine Dummy Variable / Konstante ist? Und den Default Case kann ich ja prinzipiell leer lassen.
Jetzt sieht es nur so aus, dass sich meine 8 Unterprogramme dadurch unterscheiden, dass ein Befehl an eine andere Slaveadresse geschickt wird (1 bis 8) vom Master aus. D.h. ich kann das ganze schlanker ansetzen, indem ich nicht in jeden Case das Unterprogramm setze, sondern das Unterprogramm anschließend Setze und in jeden Case nur die Nummer, die an das Unterprogramm geschickt werden soll.
(siehe angehängtes Bild)
Nun habe ich aber das Problem, dass auch in dem Default Case eine Nummer stehen muss sonst bekomme ich eine Fehlermeldung "Missing Tunnel Assignment". Da könnte ich jetzt einfach eine Null hinschreiben und die nach außen leiten, aber dann setzen meine Slaves alles auf Null.
Also jetzt zwei Möglichkeiten, die ich als Lösung überlege:
Ich kann das Programm nicht dazu bringen, dass es ständig ausgeführt wird und den Default Case verwendet, falls niergends ein True steht? Denn wenn ich das Programm anhalten könnte, so kann ich den Default Case ja als meine Slaveadresse Nr. 1 verwenden.
Und zweitens ich kann LabVIEW nicht dazu bringen im Default Case keine Nummer nach außen leiten zu wollen?
Cheers.
Machst du nach dem SuchenArray ein +1 , somit ist dann dein Taster1 auch der Case1.
Case 0 machst du default.
Das ändert aber nichts an meiner Problematik.
Ich meine, die Indizierung kann ich ja vergeben wie ich will, daran störe ich mich nicht.
Mein Problem ist, dass diese Konstruktion auf jeden Fall bei jedem Durchlauf etwas ausführt. Nämlich das was im Default Case steht (wenn ich keinen Knopf gedrückt habe).
Und das soll sie eben nicht: siehe oben.
Cheers.
Ich habe das Problem mal provisorisch so gelöst, dass ich im Default Case eine Slaveadresse eingegeben habe, die nicht besetzt ist (außer der Null!!).
Scheint zu gehen.
Cheers.