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!
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.
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).
' 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).
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.