28.01.2010, 17:23
Beitrag #1
|
Svenni
LVF-Gelegenheitsschreiber
Beiträge: 227
Registriert seit: Mar 2005
7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE
23843
Deutschland
|
Große Datenmenge aus SubVI holen
Hallo alle zusammen,
ich brüte gerade über einem Problem.
In meinem aktuellen Projekt bekomme ich einen großen String (ca. 180MB) aus einer dll.
Da das Auslesen der Daten mehrfach aufgerufen werden muss, habe ich ein SubVI erstellt. Dieses SubVI liegt wiederum in einem SubVI.
Wie bekomme ich jetzt die Daten am besten in das HauptVI.
Der Aufbau noch einmal genau:
- SubVI-A ruft eine dll auf. Die dll erzeugt einen String (ca. 180MB) und gibt diesen ans SubVI.
- SubVI-B ruf SubVI-A auf. In SubVI-B müssen nur ein paar Daten berechnet werden, die die dll braucht. Der String muss nur ans HauptVI durchgereicht werden.
- HauptVI ruft SubVI-B auf.
Mein erster Versuch sah so aus, dass ich die Daten in eine globale Variable schreibe und so SubVI-B garnicht mit den Daten in Berührung kommt.
Ganz optimal finde ich die Sache jedoch nicht.
Außerdem bekomme ich Probleme in meinem HauptVI. Ich muss aus dem String ein Array of Strings machen. Dazu nutze ich "Tabellen-String nach Array (Funktion)". Leider muss die Funtion neuen Speicher allokieren. Daraufhin wird es bald ein wenig eng mit dem Speicher und LabVIEW meldet häufig, dass der Speicher voll ist.
Ich bekomme es verflixt nicht hin, dass mein SubVI-A wieder aus dem Speicher verschwindet.
Wer kann mir einen Tipp geben?
Vielen Dank schon einmal!!!
Gruß
Sven
|
|
|
28.01.2010, 17:30
Beitrag #2
|
IchSelbst
LVF-Guru
Beiträge: 3.700
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Große Datenmenge aus SubVI holen
Folgende Idee:
In LV2009 gibt es Datenwertreferenzen. Du könntest folgendes probieren. Im MainVI wird Speicher alloziert, der als Datenspeicher gilt. Dann wird für diesen Datenspeicher eine Datenwertreferenz erstellt. Diese Referenz wird an alle SubVIs durchgereicht. Somit sollte laut Theorie auch das SubVI mit der DLL in den Speicher, der im MainVI liegt, schreiben können.
Ich glaube, deine Aufgabe wäre ein guter Anlass, die Datenwertreferenzen mal auszuprobieren.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
28.01.2010, 17:42
Beitrag #3
|
Svenni
LVF-Gelegenheitsschreiber
Beiträge: 227
Registriert seit: Mar 2005
7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE
23843
Deutschland
|
Große Datenmenge aus SubVI holen
Vielen Dank für die schnelle Antwort.
Werde mich morgen einmal damit beschäftigen.
Melde mich dann noch einmal, wie es läuft.
Gruß
Sven
|
|
|
28.01.2010, 19:28
Beitrag #4
|
IchSelbst
LVF-Guru
Beiträge: 3.700
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Große Datenmenge aus SubVI holen
' schrieb:Melde mich dann noch einmal, wie es läuft.
Oh, ja, bitte! Auf jeden Fall, egal wie's ausgeht.
Das interessiert mich (und bestimmt andere auch) schon sehr. Ob es funktioniert, eine Datenwertreferenz irgendwo zu erstellen und überall zu verwenden.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
29.01.2010, 11:56
Beitrag #5
|
Svenni
LVF-Gelegenheitsschreiber
Beiträge: 227
Registriert seit: Mar 2005
7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE
23843
Deutschland
|
Große Datenmenge aus SubVI holen
Hallo IchSelbst,
hat ein wenig gedauert, aber mir ist noch etwas anderes dazwischen gekommen.
Ich habe die Datenreferenzen eingebaut und es funktioniert. Auf jeden Fall habe ich jetzt weniger Speicherprobleme und die globalen Variablen kann ich entsorgen.
Vielen Dank noch einmal.
Gruß
Sven
|
|
|
| |