LabVIEWForum.de - Wie über Referenzen kommunizieren?

LabVIEWForum.de

Normale Version: Wie über Referenzen kommunizieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

da ich glaube, dass es sich um ein allg. Problem handelt, stelle ich die Frage in dieser Rubrik.

Ich erstelle von einer LVOOP-Instanz eine Referenz (einmalig) und führe diese in mehrere parallele Schleifen.
In den Schleifen selbst schaut es folgendermaßen aus:

[attachment=31066]

Ich lese dort Werte aus und/oder schreibe Werte hinein.
Wenn ich einen Wert hineinschreibe, dann ist dieser beim nächsten Schleifendurchlauf nicht mehr vorhanden. In den parallelen Schleifen auch nicht.

Über die Referenz habe ich doch eine direkte Adressierung im Speicher (wie eine Art Pointer). Wieso ist der Wert im nächsten Schleifendurchlauf weg bzw. wie muss ich das ändern, damit es funktioniert?
Wie erzeugst Du die Referenz?
Sieht mir im Moment nach einer Referenz auf ein Anzeigeelement aus.
Und woher willst du bei paralleler Ausführung wissen wer zuerst schreibt? Lass es mit den Referenzen. Dafür ist das Reference PAttern echt besser geeignet.
' schrieb:Wie erzeugst Du die Referenz?
Sieht mir im Moment nach einer Referenz auf ein Anzeigeelement aus.
Jupp genau das war das auch (Anzeigeelement eines Objekts. Wusste nicht, wie ich sonst eine referenz darauf bekomme).

Ich bin nun zu den Meldern zurückgekommen. Nicht schön, aber es funktioniert wenigstens halbwegs.Unsure

Ich greife fast nur lesend darauf zu. Daher ist es nicht so schlimm, wer wann darauf zugreifen würde, denke ich.
Wenn alle lesend zugreifen, ist es eine Konstante.

Ansonst öffnet da Vorgehen Race Conditions Tür und Tor, wenn wenigsten zwei Stellen konkurierend schreiben.

Wieso der Wert weg ist, kann ich mir gerade auch nicht erklären.

Ansonsten würde so wie dem vor Dir ge-Hi-Jack-ten Wink Thema vorgehen ...
' schrieb:Wusste nicht, wie ich sonst eine referenz darauf bekomme).
Das war ja auch eine Referenz auf die Anzeige der Klasse(ndaten), nicht auf die Klasse. Die Daten, die du lesen bzw. beschreiben willst, liegen in keinem Anzeige- oder Eingabeelement, sondern in einem Datenfluss. Auf den kann man aber nicht per Referenz (Pointer) zugreifen.

Willst du nur lesen, kannst du selbstverständlich eine Referenz auf ein Anzeigeelement der Klassendaten verwenden.
' schrieb:Wieso der Wert weg ist, kann ich mir gerade auch nicht erklären.
Na, warum ist der wohl weg?

Weil durch die Referenz der Wert im Anzeigeelement überschrieben wird, nicht der im Datenfluss, der in das Anzeigeelement schreibt. Der Lesende liest das Anzeigeelement, das von der "Klasse" beschrieben, also überschrieben, wird.
' schrieb:Willst du nur lesen, kannst du selbstverständlich eine Referenz auf ein Anzeigeelement der Klassendaten verwenden.
Da niemand die Werte ändert, kann man die Klassendaten direkt verteilen, quasi als Konstante.


' schrieb:Na, warum ist der wohl weg?

Weil durch die Referenz der Wert im Anzeigeelement überschrieben wird, nicht der im Datenfluss, der in das Anzeigeelement schreibt. Der Lesende liest das Anzeigeelement, das von der "Klasse" beschrieben, also überschrieben, wird.
Wenn ich den Wert im Anzeigeelement ändere und danach über eine Referenz auf das Anzeigeelement zugreife, sollte ich den Wert wieder bekommen.
' schrieb:Wenn ich den Wert im Anzeigeelement ändere und danach über eine Referenz auf das Anzeigeelement zugreife, sollte ich den Wert wieder bekommen.
... es sei denn, das Anzeigeelement wird kontinuierlich durch einen kontinuierlichen Prozess refresht. z.B. so: Datenfluss in While-Schleife mit Schieberegister. Der Datenfluss wird zwecks Weitergabe per Referenz in ein Anzeigeelement geschrieben ...
klar, wenn ich in einer Schleife fortwährend die Startwerte reinschreiben, sind die anderen Werte weg. Wer zuletzt geschrieben hat, hat gewonnen. Ich benötige vor allen Dingen keine Schleife mit Shift-Register - vielmehr darf man keine solche Schleife haben, wenn man mit Referenzen arbeitet.
Referenz-URLs