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 

private Daten lesen und schreiben in separaten VI's



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.12.2011, 14:54 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2011 14:59 von Metzlmane.)
Beitrag #1

Metzlmane Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2011

2010
2010
EN



private Daten lesen und schreiben in separaten VI's
Hallo,

ich finde keine Loesung fuer mein Problem, aber ich denke, dass ich etwas nicht verstanden habe.

Ich wuerde gerne eventbasierend die privaten Daten einer Klasse aendern, sie aber dauerhaft auslesen (bzw intervallsmaessig).
Wie in dem VI zu sehen, liesst die obere Schleife die Daten aus, was auch funktioniert.
Wenn ich jetzt aber durch ein erzeugtes Event Daten in den Privaten bereich der Klasse schreiben will, werden sie nicht veraendert.

Muss ich den Ausgang der unteren Methode in eine Art Shift-Register fuehren?
Ich habe leider keine Idee wie ich das verwirklichen soll.
Bitte um Ratschlaege Blush


Gruesse,
Metzlmane


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2011, 15:09
Beitrag #2

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: private Daten lesen und schreiben in separaten VI's
Hi
LabVIEW Objekte verhalten sich genauso wie alle anderen elementaren LabVIEW Datentypen: Sie folgen dem Datenflusskonzept. An Drahtabzweigen werden Duplikate erzeugt.

LabVIEW Objekte sind keine Entitäten wie in in anderen konventionellen OO-Programmiersprachen.

In dem LVOOP Bereich dieses Forums gibt es aber viele Links zu diesem Thema.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2011, 08:04
Beitrag #3

Metzlmane Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2011

2010
2010
EN



RE: private Daten lesen und schreiben in separaten VI's
Ok, vielen Dank. So in etwas dachte ich mir schon.
Ich werde es mal mit der Methode versuchen:
Abrissbirne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.12.2011, 12:04
Beitrag #4

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: private Daten lesen und schreiben in separaten VI's
Theoretisch sollte es funktionieren, wenn du dir eine Referenz auf das Objekt holst und über die Referenz schreibst / liest (soweit ich gelesen habe geht das seit LV2009 (?)). Dann sollte das funktionieren.

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.12.2011, 17:06
Beitrag #5

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: private Daten lesen und schreiben in separaten VI's
Hi Kiesch
Das widerspricht aber dem Datenfluss-Paradigma von LabVIEW und birgt die Gefahr von Daedlocks in komplizierteren Situationen. Die Referenzen auf LabVIEW Daten sollte man mit Vorsicht geniessen.

Besser: Referenz-Muster. (LabVIEW Examples->Fundamentals->Object-Oriented->ReferenceObject.lvproj) Das basiert im wesentlichen auf einer Queue der Größe 1, die also nur genau ein LabVIEW-Objekt aufnehmen kann. Das Queue-Referenz Objekt kann beliebig geklont werden. Das eigentliche LabVIEW-Objekt kann aber immer nur ein Thread haben, wechselseitiger Ausschluss.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.12.2011, 12:01
Beitrag #6

Kiesch Offline
LVF-Stammgast
***


Beiträge: 415
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: private Daten lesen und schreiben in separaten VI's
Die Referenz wäre halt nur das einfachst zu realisierende - mit Datenfluss kann man nunmal nicht alles machen - auch wenn er zu bevorzugen ist so lange haltbar.

Ansonsten könnte man auch das Objekt in einer FGV Speichern und diese mit einer Sperrarchitektur ausstatten. (Sperren bei Lesen (falls nötig; unterschieden nach Lese- und Schreibsperre), Entsperren und Rückspeichern nach Verarbeitung - und sei es auch nur ein get irgendwas (potentiell kann da ja eine Berechnung dahinter stecken - also sollte auf jeden Fall vermieden werden, dass zwei Prozeduren gleichzeitig auf das Objekt zugreifen können).

Potentiell bräuchte man außerdem ne Warteschlage in der FGV (wer wann zum Zug kommen darf, um das nicht dem Zufall zu überlassen; hängt aber ganz davon ab wie wahrscheinlich es überhaupt ist, dass zwei Zugriffe gleichzeitig stattfinden - passiert das potentiell fast immer braucht man das, passiert das nur in 1% der fälle macht das nur sinnlos overhead und wird durch den "Zufall" auch hinreichend gut geregelt.

Gruß Kiesch

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.12.2011, 13:59 (Dieser Beitrag wurde zuletzt bearbeitet: 21.12.2011 14:00 von abrissbirne.)
Beitrag #7

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
RE: private Daten lesen und schreiben in separaten VI's
(21.12.2011 12:01 )Kiesch schrieb:  Die Referenz wäre halt nur das einfachst zu realisierende - mit Datenfluss kann man nunmal nicht alles machen - auch wenn er zu bevorzugen ist so lange haltbar.

Ansonsten könnte man auch das Objekt in einer FGV Speichern und diese mit einer Sperrarchitektur ausstatten. (Sperren bei Lesen (falls nötig; unterschieden nach Lese- und Schreibsperre), Entsperren und Rückspeichern nach Verarbeitung - und sei es auch nur ein get irgendwas (potentiell kann da ja eine Berechnung dahinter stecken - also sollte auf jeden Fall vermieden werden, dass zwei Prozeduren gleichzeitig auf das Objekt zugreifen können).

Potentiell bräuchte man außerdem ne Warteschlage in der FGV (wer wann zum Zug kommen darf, um das nicht dem Zufall zu überlassen; hängt aber ganz davon ab wie wahrscheinlich es überhaupt ist, dass zwei Zugriffe gleichzeitig stattfinden - passiert das potentiell fast immer braucht man das, passiert das nur in 1% der fälle macht das nur sinnlos overhead und wird durch den "Zufall" auch hinreichend gut geregelt.

Gruß Kiesch

Oder einfach wie Holger sagt das Reference Pattern benutzen (LabVIEW Examples->Fundamentals->Object-Oriented->ReferenceObject.lvproj). Dais
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.12.2011, 09:03
Beitrag #8

Metzlmane Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Feb 2011

2010
2010
EN



RE: private Daten lesen und schreiben in separaten VI's
(21.12.2011 13:59 )abrissbirne schrieb:  Oder einfach wie Holger sagt das Reference Pattern benutzen (LabVIEW Examples->Fundamentals->Object-Oriented->ReferenceObject.lvproj). Dais

Genau so mache ich es jetzt und es funktioniert wunderbar. Top2
Auf die Idee ware ich bei Weitem nicht gekommen..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: