INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Union in LabVIEW



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!

17.08.2007, 08:35
Beitrag #1

RomanT Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Aug 2007

2011
2006
DE


Schweiz
Union in LabVIEW
Hallo allerseits

Ich bin noch Anfänger im Umgang mit LabVIEW und habe gerade ein kleines Problem, für das ich zwar eine Lösung weiss, jedoch nur eine, welche micht nicht vollständig zufriedenstellt:

Ich habe mehrere Cluster welche einen unterschiedlichen Aufbau haben. Ebenso ist die Anzahl der Cluster nicht fest vorgegeben. Ich möcht nun diese Cluster in eine Reihenfolge bringen, wozu ich aber kein Array gebrauchen kann, da die Cluster ja unterschiedlich sind. Meine unelegante Lösung des Problem besteht bisher darin, das ich den Aufbau der Cluster vereinheitliche und nur die Elemente der Cluster verwende, welche ich eigentlich benötige. Jeder Cluster hat also Elemente, die gar nicht nötig wären. So kann ich die Cluster in ein Array ablegen. Über ein weiteres Array mit Identifizierungswerten kann ich dann den eigentlich Typ der Cluster bestimmen und weiss so, welche Daten in jedem Cluster überhaupt relevant sind. In C++ könnte ich dieses Problem elegant mit einer Union umgehen. Etwas ähnliches habe ich bisher in LabVIEW allerdings nicht entdeckt. Gits es so was oder weiss einer eine schönere Lösung für mein Problem?

Grüsse
R. Thaller
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.08.2007, 08:50 (Dieser Beitrag wurde zuletzt bearbeitet: 17.08.2007 08:54 von Achim.)
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Union in LabVIEW
Evtl. könntest du deine Daten mit "FlattenToString" bearbeiten und dann in ein String-Array ablegen. Zum richtigen Interpretieren könntest du dem String einen Header als Typinformation (z.B. dreistellige Zahl-/Buchstabenkombi) voranstellen und dann an der Auswertestelle erst diesen Header abfragen und entsprechende Cases ("XYZ", "03F", o.ä.) ausführen

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.08.2007, 09:16
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Union in LabVIEW
Um unterschiedliche Datentypen auf ein allgemeines Einheitsformat zu bringen, wurde von Microsoft der Datentyp "Variant" eingeführt. Das gibt es auch LabVIEW, und vielleicht ist die von Dir erwähnte "Union" in C++ im Prinzip dasselbe.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.08.2007, 09:51
Beitrag #4

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.694
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Union in LabVIEW
Union ist ein "Speichermanagementsystem". Damit ist es möglich, mit Variablen unterschiedlichen Typs auf den SELBEN Speicherbereich zuzureifen. In LV ist dieses Feature nicht implementiert.

Ich würde die Methode des überdimensionierten Clusters beibehalten. Oder ein System mit "funktionalen VIs" schaffen, dass je nach Eingangsenumerator am Ausgang den entsprechenden Typ liefert (durch expliziete Extrahierung aus dem überdimensionierten Cluster).

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2007, 07:56
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Union in LabVIEW
' schrieb:Union ist ein "Speichermanagementsystem". Damit ist es möglich, mit Variablen unterschiedlichen Typs auf den SELBEN Speicherbereich zuzureifen. In LV ist dieses Feature nicht implementiert.

Danke für die Richtigstellung, in C bin ich mit meinen Übungen über "Hello World" nicht viel hinausgekommen.

Aber trotzdem Anfängerfrage: Was Du beschreibst, ist doch genau das, was man in LV mit Type-Casting (Typenformung) auch tun kann. Also z.B kann man damit Typ U32 im Speicher umdeuten in 2 * U16. Deine Beschreibung für das "Speichermanagementsystem" in C++ würde doch hierauf genau passen! Inwiefern ist das Type-Casting in LV etwas anderes?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2007, 11:51
Beitrag #6

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.694
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Union in LabVIEW
' schrieb:Was Du beschreibst, ist doch genau das, was man in LV mit Type-Casting (Typenformung) auch tun kann. Also z.B kann man damit Typ U32 im Speicher umdeuten in 2 * U16. Deine Beschreibung für das "Speichermanagementsystem" in C++ würde doch hierauf genau passen! Inwiefern ist das Type-Casting in LV etwas anderes?
Im Prinzip ist das richtig. Man könnte ein Union durch TypCast ersetzten - aber nicht immer.

Der Hauptunterschied ist, dass man eben nichts machen muss. Ein Typcast wäre explizit, mit union ginge das implizit - also ohne einen Text (so in der Art int32(Argument)) hinschreiben zu müssen. Eine weitere Möglichkeit ist, ohne irgendwelche Schwierigkeiten z.B. auf das dritte Byte eines I32 zugreifen zu können. Ein I32 ist dann praktisch ein "Array[0..3] of byte". Auf das dritte Byte zuzugreifen, geht mit TypCast nicht (da braucht man dann schon shl und and etc.). Außerdem kann man mit Union "Typcast machen", die mit TypCast möglicherweise gar nicht gehen - Boolean nach Pointer (um nur ein Beispiel zu nennen).

Unter .NET sollen unions angeblich nicht mehr funktionieren.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Gehe zu: