You are here: Symbol Reference > SignalUtils Namespace > Functions > SignalUtils.ReadFromCircularBuffer Function
DSP Master VCL
ContentsIndex
Example

Circular buffer test. 

 

    uses MtxExpr, Math387, MtxVec, SignalUtils, MtxVecTee, MtxVecEdit;

  procedure TForm1.Button1Click(Sender: TObject);
  var h1,h,c,b: Vector;
      i,n: integer;
      State: TCircularBufferState;
  begin
      h1 := Ramp(30, mvDouble, 0,1);

      c.Size(h1);
      c.SetZero;

      h.Size(h1);
      h.SetZero;

      n := 6;
      InitCircularBuffer(11,2,State);
      for i := 0 to (h1.Length div n) - 1 do
      begin
           h1.SetSubRange(i*n,n);
           h.SetSubRange(i*n,n);
           c.SetSubRange(i*n,n);
           WriteToCircularBuffer(b,h1,State);
           n := PeekCircularBuffer(State);
           MonitorCircularBuffer(b,h,State);
           ReadFromCircularBuffer(b,c,State);
      end;
      h1.SetFullRange;
      h.SetFullRange;
      c.SetFullRange;
      DrawIt([h1,h,c],['Original','Monitored','Read']);
      //must be all equal, if right
  end;

 

  #include "MtxExpr.hpp"
  #include "MtxVecEdit.hpp"
  #include "MtxVecTee.hpp"
  #include "SignalUtils.hpp"

  void __fastcall TForm1::BitBtn1Click(TObject *Sender)
  {
    sVector h1,h,c,b;
    int n,i,k;
    TCircularBufferState State;

    h1 = Ramp(30, mvDouble, 0,1);

    c.Size(h1);
    c.SetZero();

    h.Size(h1);
    h.SetZero();

    n = 6;
    InitCircularBuffer(11,2,State);
    k = h1.Length/n;
    for (i = 0; i < k; i++)  //must use k here, otherwise h1.Length is evaluated for every iteration
    {
       h1.SetSubRange(i*n,n);
       h.SetSubRange(i*n,n);
       c.SetSubRange(i*n,n);
       WriteToCircularBuffer(b,h1,State);
       PeekCircularBuffer(State);
       MonitorCircularBuffer(b,h,State);
       ReadFromCircularBuffer(b,c,State);
    }
    h1.SetFullRange();
    h.SetFullRange();
    c.SetFullRange();
    DrawIt(OPENARRAY(TVec*,(h1,h,c)),OPENARRAY(AnsiString,("Original","Monitored","Read")));
    //must be all equal, if right
  }
Copyright (c) 1999-2025 by Dew Research. All rights reserved.