LabVIEWForum.de
Ringpuffer mit Zeiger - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW RealTime (/Forum-LabVIEW-RealTime)
+---- Thema: Ringpuffer mit Zeiger (/Thread-Ringpuffer-mit-Zeiger)

Seiten: 1 2 3


RE: Ringpuffer mit Zeiger - GerdW - 13.09.2016 19:34

Hallo Max,

Zitat:sagen wir ich hebe ein Datenfeld A B C D und es findet bei x(WertA) statt. Es werden neue Samples eingetragen B C D und jedes mal wird das Array um -1 rotiert, der Ringbuffer-Index wird weitergezählt: x-1, x-2, x-3 Dann steht mein Index doch immer noch auf A so wie es sein sollte
Wird denn der Index A auch außerhalb deiner FGV immer mit angepasst?
Du schreibst zum Zeitpunkt A das Sample in die FGV, willst aber zum Zeitpunkt D das Event wieder auslesen. Wird dann beim Auslesen auf Wert A oder Wert D zugegriffen? Immerhin wurde das Array in der FGV ja mittlerweile um 3 Positionen weitergedreht…


RE: Ringpuffer mit Zeiger - maxxillian - 14.09.2016 09:53

Hallo Geld

hab noch mal alles verändert sodass sich das Datenfeld nicht mehr bewegt und das Problem mit dem Index wegfällt!

Anbei auch mal ein Test.Vi damit ihr seht wie ich die Funktion Global verwende.
Beim Test wird mir immer nur der erste Wert (hochlaufend) angezeigt der Restpuffer ist NaN (Initialwert).
Benutze ich FG falsch?
Wenn ich den Puffer einzeln programmiere funktioniert alles gut. Das Datenfeld steht und wird beim erreichen der Puffergröße wieder von vorne mit Werten aufgefüllt.
Wenn ich allerdings versuche alles in die FG zu packen habe ich schwierigkeien (erste FG die ich programmiere)


RE: Ringpuffer mit Zeiger - GerdW - 14.09.2016 10:18

Hallo Max,

du hast beim "WriteIN" vergessen, eine Puffergröße anzugeben…
Ich persönlich würde diesen Punkt anders lösen: deine FGV kennt doch die aktuelle Puffergröße - wieso also hier auf einen Input zurückgreifen!?
Warum heißt der "Init"-State deiner FGV nicht genau so, sondern "Default"???

Schau dir mal das Attachment an…


RE: Ringpuffer mit Zeiger - maxxillian - 14.09.2016 12:54

Hallo Gerd,

deine Funktion ist super aber funktioniert das Speichern der Daten auch andersrum?

Ich habe das mit einem Vi. mal gemacht damit du weisst was ich mit "andersrum" meine.
Der Zweck ist dass ich mir direkt bei einem Ereigniss den Index merke und nur noch die zu lesende Feldlänge angeben muss.

Zitat:Warum heißt der "Init"-State deiner FGV nicht genau so, sondern "Default"???
Hast du völlig Recht wird geändert Big Grin




Edit:
Es ist überhaupt nicht nötig die Daten umzukehren.
Mein Gedankengang dazu war recht bescheuert, es scheint mein Kopf ist dank den Temperaturen von 30° langsam gar Big Grin

Vielen Dank für eure, (speziell deine) Hilfe (Gerd)!! Thanx


RE: Ringpuffer mit Zeiger - GerdW - 14.09.2016 13:20

Hallo max,

Zitat:Der Zweck ist dass ich mir direkt bei einem Ereigniss den Index merke und nur noch die zu lesende Feldlänge angeben muss.
Nur das dann beim Auslesen die Samples in der verkehrten Reihenfolge ausgegeben werden…

Deine VIs waren sehr kompliziert, ich habe sie mal vereinfacht…


RE: Ringpuffer mit Zeiger - maxxillian - 15.09.2016 10:03

Hallo Gerd danke für die Verbesserung!

Ich habe Probleme den Default Case in "Init" umzubenennen.
Egal was ich schreibe es wird mit rot angezeigt und immer meckert er das ein case nicht verbunden ist oder ähnliches.


Ps. habe das Vi nochmal verbessert sodass es im Case "Read" nicht mehr zu einen Fehler kommt wenn
startindex+länge > Puffergröße ist


Edit: Sorry die Verbesserung ist noch eine alte Version die noch nicht funktioniert.
Lade gleich die funktionierende hoch 2hands


RE: Ringpuffer mit Zeiger - jg - 15.09.2016 10:41

(15.09.2016 10:03 )maxxillian schrieb:  Ich habe Probleme den Default Case in "Init" umzubenennen.
Egal was ich schreibe es wird mit rot angezeigt und immer meckert er das ein case nicht verbunden ist oder ähnliches.
Dann ändere mal dein (hoffentlich als Typdefinition angelegtes) Enum ab!!!

Gruß, Jens


RE: Ringpuffer mit Zeiger - maxxillian - 15.09.2016 11:01

Hey Jens,

habe ich schon versucht,
gleiche Namen, 3 Fälle, alles 10 mal kontrolliert ob ich mich nicht verschieben hab Big Grin

ps. Im Anhang die Korrektur von
Zitat: habe das Vi nochmal verbessert sodass es im Case "Read" nicht mehr zu einen Fehler kommt wenn
startindex+länge > Puffergröße ist



RE: Ringpuffer mit Zeiger - jg - 15.09.2016 11:14

Du musst das Enum in der ctl-Datei (die du nie mit hochlädst) abändern:
[attachment=56630]
Gruß, Jens


RE: Ringpuffer mit Zeiger - maxxillian - 15.09.2016 11:30

Hallo Jens,

ich weiß aber es funktionier nicht oder muss ich auf was besonderes achten? Big Grin

Ich öffne immer die TypeDef und kann dann ja einfach Fälle hinzufügen, umbenennen oder löschen...


sry vergessen zu konvertieren
hier nochmal für 2014