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 

Clusterelemente in Enum



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!

13.08.2013, 07:51 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2013 11:26 von jg.)
Beitrag #1

Mrindfleisch Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Mar 2010

13.0f2
2009
DE_EN

68169
Deutschland
Clusterelemente in Enum
Hallo zusammen,

brauche mal wieder einen Tip von Euch 2hands

ich habe mir eine recht umfangreiche LabView Anwendung gebaut und stehe jetzt vor dem Problem, dass ich einen recht großen Cluster habe in dem alle möglichen Informationen über eine queue zwischen den verschiedenen parallelen Schleifen ausgetauscht werden. Die queue ist mit der größe 1 definiert (also der gesamte cluster steht genau einmal drin). Nun soll jede Schleife beliebig einzelne elemente des Clusters beschreiben können und den gesamten Cluster lesen können.
Das lesen ist kein Problem.
Zum schreiben müsste ich die queue kurzzeitig sperren, das immer nur einer am Auslesen, verändern und schreiben ist...
Eigentlich auch kein Problem den zugriff kann man in ein SubVI packen und dieses nur einmal gleichzeitig aufrufbar machen.
Jetzt zu meinem Problem:

Ich möchte jeweils nur ein Element des Clusters ändern. Wie kann ich dem SubVI mitteilen um welches element es sich handelt.
Gibt es die Möglichkeit die Namen und Position (Reihenfolgenummern) vom Cluster (Strikte Typedef) in eine Enum oder ähnliches zu übertragen? Natürlich möglichst ohne den ganzen cluster per hand eintippen zu müssen.

die Idee ist ein SubVI zu erstellen, das einen Eingang z.B. Enum für die Position im Cluster und einen Eingang Variant für die Information besitzt. Die Information kann dann im SubVI in den Cluster einsortiert werden.

Danke schon mal

Gruß Mario
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2013, 08:03
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: clusterelemente in enum
Hallo Mario,

mehrere Kommentare:
Zitat:Die queue ist mit der größe 1 definiert (also der gesamte cluster steht genau einmal drin).
Das ist ein klassisches Konzept, um eine Datenstruktur kollisionsfrei zu verwalten.

Zitat:Zum schreiben müsste ich die queue kurzzeitig sperren, das immer nur einer am Auslesen, verändern und schreiben ist...
Musst du nicht. Eine RMW-Operation (Read-Modify-Write) holt den Cluster aus der Queue, verändert ihn und schreibt ihn zurück. Solange die Queue leer ist, kann keine andere Instanz mit dem Cluster arbeiten - es muss ja erst gewartet werden, bis der Cluster zurückgeschrieben wurde!

Zitat:Ich möchte jeweils nur ein Element des Clusters ändern. Wie kann ich dem SubVI mitteilen um welches element es sich handelt.
Genau hier sollte man sich überlegen, ob die 1-Element-Queue immer noch das passende Konstrukt darstellt. Ich z.B. würde spätestens jetzt auf eine FGV oder ein OOP-Objekt umsteigen. Beide erlauben das Bearbeiten einzelner Elemente des Clusters, indem man entsprechende Aufrufe der FGV oder passende OOP-Methoden aufruft...

Zitat:die Idee ist ein SubVI zu erstellen, das einen Eingang z.B. Enum für die Position im Cluster und einen Eingang Variant für die Information besitzt. Die Information kann dann im SubVI in den Cluster einsortiert werden.
Meine Rede: speicher den Cluster jetzt noch in einem Schieberegister in eben diesem subVI und du hast eine saubere FGV-Lösung!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2013, 08:05 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2013 08:32 von Lucki.)
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
RE: clusterelemente in enum
Mir scheint, das für Dein Problem Melder anstelle von Queues passen.
Der Unterschied: Beim Melder ist die "Queuegröße" nur 1. Die Daten werden aber nicht wie bei der Queue durch Lesen zerstört, sondern nur durch Überschreiben mit neuen Daten. Deshalb können sie von mehreren Stellen aus gelesen werden, was bei einer Queue nicht geht. (Es gibt bei Meldern noch etliche Optionen, z.B die, dass die Daten erst dann überschrieben werden können, wenn die alten Daten von allen N Stellen gelesen wurden)
Der Unterschied zwischen Meldern und Globalen/Lokalen Veriablen, FGVs beteht in der Synchronisation. Bei einer globalen Variablen weiß man nie, ob es sich um einen neuen Wert handelt, oder ob es wieder derselbe Werte ist, denn man schon 10 mal gelesen hat. Melder und Queues können beim Lesen warten, bis neue Werte da sind.
Zitat:Ich möchte jeweils nur ein Element des Clusters ändern. Wie kann ich dem SubVI mitteilen um welches element es sich handelt.
Jedes Element im Cluster hat einen Index. Du müßtest ein zusätzliches numerisches Element in den Cluster nehmen und damit dem SubVI den Index des geänderten Elementes mitteilen. (oder auch so: neuen Cluster erstellen, bestehend aus den Elementen "alter Cluster" und "Index")
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2013, 08:51
Beitrag #4

Mrindfleisch Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Mar 2010

13.0f2
2009
DE_EN

68169
Deutschland
RE: clusterelemente in enum
Hallo und danke für die schnelle Antwort.

(13.08.2013 08:05 )Lucki schrieb:  Jedes Element im Cluster hat einen Index.
das weis ich, genau darauf will ich raus.

Zitat: Du müßtest ein zusätzliches numerisches Element in den Cluster nehmen und damit dem SubVI den Index des geänderten Elementes mitteilen.
genau aber wie komme ich automatisch an den Index und Namen? Giebt es da einen Eingenschaftenknoten oder sowas? und wie kommt das ganze dann vernünftig auswählbar in eine Enum oder Ring oder so?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2013, 08:54
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: clusterelemente in enum
Hallo Mario,

Zitat:wie komme ich automatisch an den Index und Namen? Giebt es da einen Eingenschaftenknoten oder sowas? und wie kommt das ganze dann vernünftig auswählbar in eine Enum oder Ring oder so?
Wieso willst du das automatisch machen? Der Cluster wird zur Edit-Zeit definiert, also kannst du den Index/das Enum auch zur Edit-Zeit definieren...
Ansonsten:
Referenz auf den Cluster -> Property "Controls" -> "Label"-Proerpty für jedes Control liefert dir eine Liste der Namen!
Mit dem Namensarray einen Ring erstellen, diesen dann in ein Enum umwandeln...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2013, 11:05
Beitrag #6

Mrindfleisch Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Mar 2010

13.0f2
2009
DE_EN

68169
Deutschland
RE: clusterelemente in enum
Hy,

Zitat:Wieso willst du das automatisch machen? Der Cluster wird zur Edit-Zeit definiert, also kannst du den Index/das Enum auch zur Edit-Zeit definieren...
Es soll ja garnicht während der Laufzeit erstellt werden. ich möchte einfach nur den Pflegeaufwand und die damit verbundenen Fehler minimieren, desswegen habe ich ja auch eine strikte Typdefinition aus dem Cluster gemacht. Es soll lediglich in der Editierphase das Enum automatisch geändert werden wenn ich in der Typdefinition des Clusters etwas ändere.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.08.2013, 11:26
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: clusterelemente in enum
Ganz automatisch geht das wohl nicht, aber per VI-Skripting sollte es möglich sein, eine Enum-Typdefinition im Edit-Modus zu ändern.

Du wirst aber nicht umhin kommen, ein kleines VI zu schreiben, welches genau das macht. Automatisches Auslösen bei Änderung am Cluster Hmm schwierig...

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2013, 13:30
Beitrag #8

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
RE: clusterelemente in enum
(13.08.2013 08:54 )GerdW schrieb:  [quote]wie komme ich automatisch an den Index und Namen? Giebt es da einen Eingenschaftenknoten oder sowas? und wie kommt das ganze dann vernünftig auswählbar in eine Enum oder Ring oder so?

nur so zum drüberstreuen: das geht wirklich sehr gut mit dem ClusterToolkit von Autotestware (gratis)

Gottfried.

PS.: auch Cluster on the fly erzeugen etc....

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2013, 14:35
Beitrag #9

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Clusterelemente in Enum
(Mist, jetzt habe ich ein Beispiel gemacht wie man den Index ermittelt, png-Bild enthielt aber Fehler, und das VI hatte ich gelöscht. Noch mal habe ich keine Lust.)

Denn was ich eigentlich sagen wollte: ich bereue meinen Vorschlag, den Index des geänderten Elementes zu übertragen, aufrichtig und ziehe ihn zurück.
Warum denn nicht gleich die Beschriftung (den Namern) des Elementes nehmen? Das sind zwar ein paar Bytes mehr, aber dafür ist das Selbst-Dokumentierend, während der Element-Index eher etwas Kryptisches ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Enum-Variable "zurücksetzen" Hans96 8 8.262 06.01.2023 07:48
Letzter Beitrag: Hans96
  Verschachtelte Clusterelemente auslesen simcum 5 3.993 31.08.2020 10:25
Letzter Beitrag: simcum
  Type Def Enum unterscheiden? Achim 5 3.985 30.07.2020 08:19
Letzter Beitrag: Freddy
  Enum gesteuertes Event ares2013 3 4.592 29.11.2019 19:03
Letzter Beitrag: Lucki
  String nach Enum konvertieren NoWay 2 4.904 20.08.2019 10:58
Letzter Beitrag: NoWay
  Enum Baumstruktur Hydrogencarbonat 8 7.218 24.02.2017 00:01
Letzter Beitrag: Hydrogencarbonat

Gehe zu: