falls pointer = 50 pointer = 0, fertig
Naja, dann hast das Problem, dass der neuste Eintrag plötzlich an erster Stelle steht. Eleganter ist:
Code:
if(pointer==50)
for(int i=0;i<50;i++)
{
array[i]=array[i+1];
}
array[50]=new_val;
Wir schieben alle Einträge einz nach unten und ersetzten den letzten Eintrag mit dem neuen Wert.
@Ringbuffer: Achso... Naja, man lernt nie aus
... Ist ein interessant Konzept. Also, Hardwaremäßig ist in einem PIC sowas net verankert. Bleibt nur die softwaremäßige Lösung. Ich hab mal ein wenig gesucht. Vielleicht hilft dir diese Seite ein wenig weiter... Eigentlich ist es nichts anderes, als du zwei Laufvariablen hast, die durch das Array laufen (einer liest, der andere schreibt). Wenn die schreib/lese-Variable den maximalen Wert erreicht wird sie auf null decrementiert und sie läuft wieder von forme los.
Dabei hast du das oben beschriebene Problem, dass plötzlich der neuste Eintrag am Anfang steht (meist kein Problem, aber es macht einige nervende Sort-Probleme). Ansonsten köntest du eine 3. Variable einführen, die den ältesten Eintrag enthält. Wenn die Schreibe-Variable überläuft, musst du diese oldest-Var um eins (1) incrementieren und immer im Kopf behalten, dass, wenn du die Sachen ausliest, immer bei dieser anzufangen.
MfG
Mobius
Lesezeichen