Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Einen Zeiger hast du ja schon über die Indexvariable:
Zuerst legst du dir ein Feld und zwei Indexvariablen an:
jetzt kannst du das Feld vollschreiben. Angenommen, pro Zyklus komm
maximal ein Byte an und du kannst die Daten schneller wegschreiben, als sie herienkommen, reicht etwas in der Art aus
IFneueDatenVorhandenTHEN
 Buffer[posSchreiben] :=neueDaten;
 posSchreiben :=posSchreiben+1;
 IFposSchreiben>100THEN
  posSchreiben :=1;
 END_IF;END_IF;
Mit der Indexvariablen für den Lesevorgang verfährst due genauso.
MFG
Benjamin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
ich habe folgendes Problem.
Ich möchte serielle Datenströme in einem Ringpuffer
speichern.
Wie ich das sehe, benötige ich ein beliebiges Array und einen Zeiger der
mir die Position im Array lokalisiert.
Nun meine Fragen:
Was mache ich wenn ich am Ende angekommen bin, springe ich dann einfach wieder in das 0-te Array Feld ?
Wie initialisiere ich das Register korrekt ?
Ich hoffe mir kann da jemand weiterhelfen
Danke
Einen Zeiger hast du ja schon über die Indexvariable:
Zuerst legst du dir ein Feld und zwei Indexvariablen an:
jetzt kannst du das Feld vollschreiben. Angenommen, pro Zyklus komm
maximal ein Byte an und du kannst die Daten schneller wegschreiben, als sie herienkommen, reicht etwas in der Art aus
Mit der Indexvariablen für den Lesevorgang verfährst due genauso.
MFG
Benjamin
hallo schau dir mal den source code auf w www.oscat.de w an
dort ist unter logic-memory ein fifo und ein stack
viel spass
Hallo benjamin,
bei mir ist aber ein kompletter Datenstrom zu erwarten, also nicht nur ein Byte pro Zyklus. Wie kann ich das Problem lösen ??
mfg
Wieso schreibst du dann nicht alle Daten, die du pro Zyklus erhalten hast in den Zwischenspeicher?