LabVIEWForum.de
Messwerte flott in einen Graphen darstellen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: Messwerte flott in einen Graphen darstellen (/Thread-Messwerte-flott-in-einen-Graphen-darstellen)

Seiten: 1 2


RE: Messwerte flott in einen Graphen darstellen - GerdW - 01.07.2015 09:10

Hallo Hasenfuss,

Zitat:wird dazu das Array komplett aus dem Speicher "entfernt" und durch ein neues Array ersetzt - also ein langsamer Prozess, weil eine Kopie des Array im Speicher erzeugt wird?
So wie du es benutzt: ja.
Das Problem ist nicht das Get/SetAttribute, sondern das InsertIntoArray: hier muss Speicher angefordert und eine neue Kopie angelegt werden.

- Ich nutze diese Vorgehensweise, um ~300 Messkanäle mit einer Historie von ~18000 Samples (30min*10Hz) im Speicher zu halten. Funktioniert prima und performant: Allerdings mit Arrays fester Länge…
- Wenn du dem GetAttribute den Datentyp vorgibst, brauchst du kein extra FromVariant danach…


RE: Messwerte flott in einen Graphen darstellen - Hasenfuss - 01.07.2015 09:34

Hallo GerdW,

vielen Dank für Deine Antwort.

>>Allerdings mit Arrays fester Länge…
Ich habe doch ein Array mit fester Länge, oder doch nicht? In der ersten for-Schleife hatte ich ein Array initialisiert mit Anzahl Stützstellen (siehe blauer Kringel im Bild).

>>- Wenn du dem GetAttribute den Datentyp vorgibst, brauchst du kein extra FromVariant danach…
Meinst Du das so, wie in dem Bild mit dem schwarzen Kringel? Ich hab jetzt einfach den Datentyp an den Eingang "Standardwert" verbunden.

>>Das Problem ist nicht das Get/SetAttribute, sondern das InsertIntoArray:...
Wird denn bei dem Befehl InsertIntoArray das komplette Array im Speicher kurz abgebildet? Ich dachte lediglich, dass nur der Teil von dem Array ersetzt wird, den ich halt neu anfügen will und der alte Teil soll gelöscht werden.

>>- Ich nutze diese Vorgehensweise,
Heisst das also, dass Du es genauso machst, wie jetzt in dem Bild von mir - also eine Rotation vornehmen und dann das InsertIntoArray verwenden, auch wenn das ein "Problem" ist?


RE: Messwerte flott in einen Graphen darstellen - GerdW - 01.07.2015 09:39

Hallo Hasenfuss,

Zitat:Ich habe doch ein Array mit fester Länge, oder doch nicht?
Nein, hast du nicht!

Zitat:In der ersten for-Schleife hatte ich ein Array initialisiert mit Anzahl Stützstellen.
Das ist hier irrelevant.

Zitat:Wird denn bei dem Befehl InsertIntoArray das komplette Array im Speicher kurz abgebildet? Ich dachte lediglich, dass nur der Teil von dem Array ersetzt wird, den ich halt neu anfügen will und der alte Teil soll gelöscht werden.
Mit InsertIntoArray wird etwas in ein bestehendes Array eingefügt - so steht es in der LabVIEW-Hilfe. Damit wird das Array länger und der Memorymanager muss neuen Speicher allokieren!
Ich arbeite mit Arrays fester Länge und ReplaceArraySubset…


RE: Messwerte flott in einen Graphen darstellen - Hasenfuss - 01.07.2015 10:49

Hallo GerdW,

>> Ich arbeite mit Arrays fester Länge und ReplaceArraySubset…
Ich hab mir grad nochmal ReplaceArraySubset und InsertIntoArray angeschaut - das Symbol unterscheidet sich nur durch einen ganz winzigen Pfeil. Die deutschen Bezeichnungen sind wohl TeilArray ersetzen und InArray einfügen.

Aber ich habe doch in meinem Beispielprogramm auch die Funktion mit dem kleinen Pfeil verwendet - also ReplaceSubset und nicht InsertInto? Oder wo liegt da gerade mein Denkfehler?


RE: Messwerte flott in einen Graphen darstellen - GerdW - 01.07.2015 11:37

Hallo Hasenfuss,

da siehst du mal, warum es ungünstig ist, nur Bilder und keine VIs anzuhängen.
Habe ich wohl selbst verwechselt…


RE: Messwerte flott in einen Graphen darstellen - Hasenfuss - 01.07.2015 16:41

Hallo GerdW,

ich hab jetzt mal einen neuen Versuch gemacht, einen Variant-Datencontainer zu basteln und auch ein Testprogramm dazu angefertigt.

Geht das jetzt so in die Richtung, wie Du das auch machst? Ich hab jetzt auch versucht, immer auf richtige Datentypen zu achten. Ich hab auch jetzt nochmal geschaut, dass ich die Funktion ReplaceArraySubset arbeite. Sind die Arrays jetzt so auch richtig in ihrer Länge begrenzt? Ich erzeuge im Init-Script jetzt vorher Arrays, die mit Nullen gefüllt sind.

Falls Du es Dir nochmal anschauen würdest, fände ich das Klasse von Dir.