LabVIEWForum.de - Datentyp eines Elements herausfinden

LabVIEWForum.de

Normale Version: Datentyp eines Elements herausfinden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

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
Hallo Mario,

zwei Möglichkeiten fallen mir ein:

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)

[attachment=61628]

Gruß, Jens

EDIT: Nachtrag zu Variante 1, es funktioniert auch der direkte Aufruf von "Get Type Information.vi"
[attachment=61631]
Bei LabVIEW <= 2014 findet man diese VIs unter ..\vi.lib\Utility\VariantDataType\...
(09.02.2021 11:37 )jg schrieb: [ -> ]Hallo Mario,

zwei Möglichkeiten fallen mir ein:

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 :-)
Hallo Mario,

du könntest auch einfach die "Class name"-Property für die einzelnen Elemente abfragen. Diese Property hat jedes FP-Element:
[attachment=61629]
Hy,

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.

Gruß
(09.02.2021 11:47 )Mrindfleisch schrieb: [ -> ]Ansatz 2 Hört sich gut an. Aber wo finde ich dieses "VI Server"? Sorry für die blöde Frage :-)
LabVIEW -> Pulldown-Menü Tools -> Options -> VI Server:
[attachment=61630]

Gruß, Jens
Es gibt da auch noch die Property "C Type" und "BitAccurateDataSize".
Hmm... oder ist das jetzt wieder eines von denen die NI versteckelt?
(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
Hallo,

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
Hallo Mario,

beim Klassennamen "Digital" musst du die allgemeine Referenz erst noch zur genauen Klasse "Numeric" wandeln:

[attachment=61633]

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.
Seiten: 1 2
Referenz-URLs