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 folgendes Problem:
Ich möchte während dem Programmablauf herausfinden welcher Datentyp ein Element eines Clusters hat.
Wie man die einzelnen Elemente des Clusters mit einer Schleife durchläuft weiß ich.
Jetzt habe ich allerdings das Problem, dass der Klassenname aller Zahlen "Digital" heißt. Ich muss aber wissen ob es ein Int oder ein Dbl ist.
Vielen Dank schon mal für evtl. Antworten :-)
Gruß und bleibt gesund
Mario
Anzeige
09.02.2021, 11:37 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2021 12:47 von jg.)
1) Ab LabVIEW 2015 gibt es standardmäßig in der Variant-Palette VIs, mit denen du den Datentyp von beliebigen Variants herfinden kannst. Diese VIs gibt es auch schon in früheren LabVIEW-Versionen, dort sind sie aber irgendwo in der vi.lib versteckt. (s. Screenshot oben)
2) Wenn du unter "VI Server" das VI scripting aktivierst, dann gibt es beim Datentyp "Digital" eine Eigenschaft "Representation"-
(s. Screenshot unten)
Gruß, Jens
EDIT: Nachtrag zu Variante 1, es funktioniert auch der direkte Aufruf von "Get Type Information.vi"
Bei LabVIEW <= 2014 findet man diese VIs unter ..\vi.lib\Utility\VariantDataType\...
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!
1) Ab LabVIEW 2015 gibt es standardmäßig in der Variant-Palette VIs, mit denen du den Datentyp von beliebigen Variants herfinden kannst. Diese VIs gibt es auch schon in früheren LabVIEW-Versionen, dort sind sie aber irgendwo in der vi.lib versteckt. (s. Screenshot oben)
2) Wenn du unter "VI Server" das VI scripting aktivierst, dann gibt es beim Datentyp "Digital" eine Eigenschaft "Representation"-
(s. Screenshot unten)
Gruß, Jens
Ansatz 2 Hört sich gut an. Aber wo finde ich dieses "VI Server"? Sorry für die blöde Frage :-)
09.02.2021, 11:56 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2021 11:58 von GerdW.)
ja genau das mache ich ja. leider kommt bei dieser Funktion für egal welche Zahlenvariable egal ob DBL, I32 oder U32 immer "Digital" raus.
Genau das möchte ich aber unterscheiden können.
(09.02.2021 13:29 )Martin.Henz schrieb: Es gibt da auch noch die Property "C Type" und "BitAccurateDataSize".
Hmm... oder ist das jetzt wieder eines von denen die NI versteckelt?
Beides "braune" PropertyNodes, also Secret Stuff...
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!
danke für den Hinweis aber ich glaube ich bin zu doof dafür.
Hab mal den Codeteil angehängt.
Das ganze ist ein Cluster mit verschiedenen Elementen unter anderem Integer und DBL Werte.
Jetzt bekomme ich ja ein Array mit Referenzen (Elemente[]) Das stecke ich dann in den Eigenschaftenknoten und möchte jetzt mittels Case Struktur auf den entsprechenden Datentyp reagieren.
Jetzt fehlt mir eben genau diese Unterscheidung. mit dem Variant "Anschluss.Datentyp" kann ich auch nichts anfangen oder?
Gruß Mario
09.02.2021, 14:06 (Dieser Beitrag wurde zuletzt bearbeitet: 09.02.2021 14:10 von jg.)
beim Klassennamen "Digital" musst du die allgemeine Referenz erst noch zur genauen Klasse "Numeric" wandeln:
Gruß, Jens
EDIT: Da dein Parameter-Cluster da so schön neben der Referenz hängt, beschäftige dich mal mit der "Variant" Umsetzung. Eine schöne Vorlage kann hierbei (IMHO) das GXML-Toolkit sein, das hangelt sich durch beliebige LabVIEW-Controls, um daraus einen XML-String zu erzeugen.
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!