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!
26.02.2010, 22:34 (Dieser Beitrag wurde zuletzt bearbeitet: 26.02.2010 22:37 von Garth.)
ich bekomme bei meiner State Machine eine Fehlermeldung: "Selector values are not unique. A selector value is used by more than one case. It may be in the middle of a range in one of the cases."
Ich hab auf der NI Seite schon geschaut (http://zone.ni.com/reference/en-XX/help/...t_unique/) Bin aber der Meinung, dass das bei mir nicht zutrifft
Was sagt ihr dazu???
Danke,
Garth
Anzeige
26.02.2010, 23:16 (Dieser Beitrag wurde zuletzt bearbeitet: 26.02.2010 23:17 von IchSelbst.)
Ohne es ausprobiert zu haben, sage ich folgendes: "Leak Test" ist größer als "6". Demzufolge befindet sich die Zeichenfolge "Leak Test" im Bereich ["6"...]. Somit ist nicht eindeutig, welcher Case bei "Leak Test" ausgeführt werden soll.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
27.02.2010, 01:39 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2010 01:43 von Garth.)
Hhmm, ich kenne die State Machine nur mit String als selector, dachte das wäre die einfachste Art dies umzusetzen. Übrigens hab ich die anderen Tasks auch mal probeweise anders benannt, also A,B, C usw. Ging auch nicht!
Edit: Ich hab gerade hier gerade gesehen, dass es auch mit dem Enum geht...ist diese Variante vorzuziehen?
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Fehlermeldung bei State Machine
Auf jeden Fall, aber dann bitte als TypeDef.
Gruß Markus
' schrieb:Edit: Ich hab gerade hier gerade gesehen, dass es auch mit dem Enum geht...ist diese Variante vorzuziehen?
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Ohne es ausprobiert zu haben, sage ich folgendes: "Leak Test" ist größer als "6". Demzufolge befindet sich die Zeichenfolge "Leak Test" im Bereich ["6"...]. Somit ist nicht eindeutig, welcher Case bei "Leak Test" ausgeführt werden soll.
Nachtrag: Hier der Versuch:
@Garth:
Das Hauptproblem bei deiner Case-Strukur ist, dass du 2x einen Bereich hinzugefügt hast, also [..."Leak Test"] und ["6"...]. Lass das weg, gerade wegen den Strings als Case-Selector. Denn was bedeutet schon größer oder kleiner bei Strings? Definiere lieber einen Case als Default-Case, der immer ausgeführt, wenn dein String nicht zur Auswahl passt.
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!
' schrieb:Edit: Ich hab gerade hier gerade gesehen, dass es auch mit dem Enum geht...ist diese Variante vorzuziehen?
Auf jeden Fall.
Ein Enumerator macht nämlich genau das, was du haben willst: Im Selektor wie auch im Rest des Programmes steht ein "lesbares Wort", also ein "String". Außerdem eliminiert das Verwenden eines Enumerators automatisch alle Nachteile eines Strings: Enumes haben aufgrund ihrer expliziten Typdefinition eine nachvollziehbare Reihenfolge, man kann sich nicht vertippen wie bei Stirsniggs, sie vereinfachen das Debugging erheblich und verbrauchen weder Speicher noch CPU-Ressourcen.
An den Selektoreingang kannst du anschließen, was du willst (naja, sag ich mal sehr viel): Bool, Enums, alle Festpunktzahlen (U8 .. I64), Errorcluster. Und - ich glaub es ja nicht - sogar DBL! Die Case-Struktur passt sich automatisch an. (Diese Sache, an einen Eingang anschließen zu können, was man will, heißt polymorph: Ein sehr wichtiger Bestandteil von LabVIEW.)
Nachtrag:
Ihr seht schon, ich hab heute langeweise. Ich muss Küche und Bad renovieren. Da kommt jede Abwechslung recht.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Anzeige
27.02.2010, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 27.02.2010 10:58 von Lucki.)
' schrieb:Auf jeden Fall, aber dann bitte als TypeDef.
Hier sollte man einem Newbie noch die Erklärung liefern warum das sinvoll ist:
Bei State-machines ist es im Entwicklungsstadium unvermeidbar, daß States hinzugefügt oder weggenommen werden. Das bedeutet dann jedesmal: Alle State-Konstanten im Enum-Format müssen von Hand geändert werden. Erstellt man hingegen ein Enum-Bedien- oder Anzeigeelment als Typdefinition und erzeugt davon mit der rechen Maustaste die Enum-Konstanten, dann haben diese eine wunderbare Eigenschaft: Wenn das Hauptelement editiert wird, dann ändern sich wie von Zauberhand alle Konstanten mit.