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 

Referenz auf 1/2 Array



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!

24.10.2019, 07:00
Beitrag #1

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
Referenz auf 1/2 Array
Hallo zusammen,

ist vermutlich schon durchgekaut worden, deshalb vorab bitte um Nachsicht dafür (ggf. würde mir ein link auf die entsprechenden Themen reichen).

Problem:
Aus einer Referenz auf eine nicht zu ändernden Datenstruktur (eine heilige Kuh) kann ich mir die Referenz auf ein 2 dim. Datenfeld mit fester Größe ermitteln.
Um von unabhängigen Programmteilen auf dieses Array schreiben zu können möchte ich jedoch zusätzlich eine Refernz auf die "untere Hälfte" des Array ermitteln. Dazu habe ich keine Idee....

Konkret:
Ziel_Array = 1000 * 32 vom Typ SNGL
Gesucht:
Referenz auf Array = 1000 * 16 SNGL ab Index Ziel_Array[0,0]
Referenz auf Array = 1000 * 16 SNGL ab Index Ziel_Array[0,16]

Hat schon jmd so ein Problem gelöst?

Beste Grüße aus'm Allgäu
Hajo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 07:36
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 16.301
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Referenz auf 1/2 Array
Hallo HaJo,

Zitat:Problem:
Aus einer Referenz auf eine nicht zu ändernden Datenstruktur (eine heilige Kuh) kann ich mir die Referenz auf ein 2 dim. Datenfeld mit fester Größe ermitteln.
Um von unabhängigen Programmteilen auf dieses Array schreiben zu können möchte ich jedoch zusätzlich eine Refernz auf die "untere Hälfte" des Array ermitteln.
Konkret:
Ziel_Array = 1000 * 32 vom Typ SNGL
Gesucht:
Referenz auf Array = 1000 * 16 SNGL ab Index Ziel_Array[0,0]
Referenz auf Array = 1000 * 16 SNGL ab Index Ziel_Array[0,16]
Du bekommst eine Referenz auf das gesamte Array, LabVIEW kennt keine "Teilarrays" als eigenständige Datentypen mit Referenz.

Reden wir hier über einen String (aka: ein 1D-Array of Bytes), bei dem eine Teilmenge eben dieses Array darstellt? Dann könntest du doch mit einem Pointer (aka Index im String) arbeiten, wenn du auf bestimmte Elemente im String zugreifen willst!
Reden wir hier über einen Cluster, der alles mögliche neben deinem Array enthält? Dann musst du eben auch mit dem gesamten Array arbeiten!
Willst du dein Array spaltenweise trennen? Dann macht sich das auf Byte-Ebene im Speicher eher schlecht, da LabVIEW Arrays zeilenweise ablegt…
Wer denkt sich denn eine Datenstruktur aus, die ein Array enthält, welches jeweils zur Hälfte benötigt wird?
Wie wird die Datenstruktur verwaltet? Wenn du dafür eine FGV (oder eine Klasse) verwendest, bekommst du den Zugriff auf diese halben Arrays sehr leicht hin…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 08:59
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.644
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Referenz auf 1/2 Array
(24.10.2019 07:00 )hajos118 schrieb:  Um von unabhängigen Programmteilen auf dieses Array schreiben zu können
Und außerdem reden wir über eine "sichere Programmiersprache" - da sind Pointer auf Datenstrukturen, um diese von irgendwoher zu manipulieren, verpönt.

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
24.10.2019, 09:12 (Dieser Beitrag wurde zuletzt bearbeitet: 24.10.2019 09:16 von hajos118.)
Beitrag #4

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Referenz auf 1/2 Array
Hallo Gerd, danke für die schnelle Rückmeldung.

Zu der Datenstruktur:
Diese ist als "globale" Datenstruktur für die Verarbeitung der kompletten Messeinrichtung gedacht. Es wurden Bereiche für Eingabe(Mess-) Analog-Werte definiert, welche Auswertungsmodule als Datenquelle benutzen.
Diese Eingangswerte werden von unterschiedlichen Quellen befüllt, daher der Zugriff auf Teilarrays.

Die Daten sind immer als Fliesskommazahlen im SNGL Format abgelegt (Ziel_Array = 1000 * 32 vom Typ SNGL) und werden im Speicher der Hauptanwendung gehalten.
Alle Ein- und Ausgabemodule bekommen nur eine Referenz auf diese Struktur und die entsprechende Typdefinition zur Verfügung gestellt.

Bis jetzt wird auf diese Weise zugegriffen :
    = Bild1

Sicherer wäre jedoch ein Befüllen nach folgendem Prinzip:
    = Bild 2

doch dazu fehlt mir die Referenz "SubTeil2", welche ich aus der ursprünglichen Referenz aus Bild 1 bestimmen möchte.

Ich hoffe, damit wird mein Problem klarer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 09:27
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 16.301
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Referenz auf 1/2 Array
Hallo HaJo,

Zitat:Bis jetzt wird auf diese Weise zugegriffen : Bild1
ohgottohgott: Race Condition Alarm!

Zitat:Sicherer wäre jedoch ein Befüllen nach folgendem Prinzip: Bild 2
Was daran ist sicherer? (Ok, es wird nicht mehr ein komplettes Array manipuliert und überschrieben.)

Wenn du sowas "sicher" machen willst, dann muss man den Zugriff auf die Daten kapseln - z.B. in einer FGV!
Sobald du unkontrollierten Zugriff auf Datenstrukturen (auch noch per Referenz und ProeprtyNodes) freigibst, wirst du nie kontrollieren, wer wann wie auf die Daten zugreift/zugreifen darf…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 09:31
Beitrag #6

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Referenz auf 1/2 Array
Genau wie du schreibst - in Bild 1 wirds richtig unsicher.
Über den Zugriff wie über Bild2 haben wir wenigstens die Sicherheit, dass nur der benötigte Teil der Daten überschrieben wird.

Hilf mir mal auf die Sprünge, bitte:
was ist eine FGV?
wie könnte dies aussehen?
Hast Du mir ein Beispiel / link auf eine Beschreibung?
Danke nochmal für Deine Mühe!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.10.2019, 09:41
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 16.301
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Referenz auf 1/2 Array
Hallo HaJo,

eine FGV (functional global variable) aka AE (Action Engine) ist eine einfache Methode, Daten(strukturen) zu kapseln und den Zugriff darauf zu "ordnen".
Ich sehe es als Vorstufe zu echtem OOP, wo die Kapselung noch etwas weiter geht…

Google einfach mal nach "site:labviewforum.de fgv", um gute Beispiele zu finden.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 11:25
Beitrag #8

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Referenz auf 1/2 Array
o.k. hab ich verstanden.

Zum ursprünglichen Problem:
Wie kann ich nun die Referenz auf den 2. Teil des Array bestimmen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 11:32
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 16.301
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 19)
1995
DE_EN

10×××
Deutschland
RE: Referenz auf 1/2 Array
Hallo HaJo,

Zitat:Wie kann ich nun die Referenz auf den 2. Teil des Array bestimmen?
Wie oben gesagt: gar nicht.

Wenn die zwei Hälften des Array immer getrennt bearbeitet werden, dann sollten die Daten auch in 2 Arrays statt nur einem abgelegt werden…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.10.2019, 12:48
Beitrag #10

hajos118 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Apr 2014

8.5, 8.6 ...
2008
DE

87549
Deutschland
RE: Referenz auf 1/2 Array
Hallo Gerd,

danke für die Nachricht...
... aber wie mein Informatik-Prof immer sagte: "Geht nicht - gibt's nicht!"

Mir ist klar, dass hier jede Menge Hirnschmalz investiert werden muss, dass die Rahmenbedingungen festgeschrieben werden müssen u.s.w.
Trotzdem sollte es doch möglich sein.
In C wäre das ein 3 Zeiler - einfachste Pointerarithmetik.
Ist Labview so eingeschränkt, dass nicht mal die Referenz auf einzelnes Element eines 2 dimensionalen Array berechnet werden kann?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: