Circular Buffer

Il componente “Circular Buffer”, è un metodo di immagazzinamento dati di tipo “First In First Out” (FIFO), il primo dato che entra è il primo dato che esce.

E’ utilizzato per comunicare,  catturare e immagazzinare i dati, attraverso un collegamento seriale, per un utilizzo successivo.

circular 1

esempio di immagazinamento erecuper dei dati

  • “In”: ingresso.
  • “Out”: uscita.

Tra i messaggi di risposta disponibili, ci sono: “OK”, “Error” e “Timeout”.

L’immagine seguente mostra i dati nel Circular Buffer all’avvio della prima simulazione.

circular 2

Nella seconda immagine la posizione di partenza è spostata di 4 posizioni, da qui il nome , Circular Buffer.

Macro reference

LookForValue:

scansiona il buffer alla ricerca di uno specifico valore.

Restituisce 0 se non lo trova. - restituisce1 se il valore è trovato.

Parametri:

  • <- STRING Value: “Value cerca per”, può essere una stringa o un byte array: può essere restituito al chiamante.
  • BYTE NumChars:il numero dei caratteri che si vuole cercare e verificare.
  • BYTE removeContent:0 = lascia i dati nel buffer, 1 = rimuove i dati dal buffer
  • BYTE ResetFind:0 = continua a cercare dall’ultima operazione, 1 = riparte di nuovo.Return Value:BYTE

GetIndexeByte:

ottiene il valore di un singolo byte a una posizione conosciuta nel buffer.

Lascia inalterati il contenuto del buffer e i puntatori .

Parametri: UINT adress

Return value: BYTE

WaitForValue:

attende finchè arriva un array o un valore nel circolar buffer.

Restituisce 0 per indicare un Time Out - restituisce 1 per indicare che il dato è stato trovato.

Parametri

  • <- STRING Value: Questo parametro può essere inviato al chiamante.
  • BYTE NumbChars: Numero dei caratteri da trovare
  • BYTE Removecontent: 0 = lascia intatto il buffer, 1= rimuove i valori.
  • UINT Timeout ; Massimo tempo di attesa in millisecondi prima di inviare i dati. -   0 = WaitForever

Return value: BYTE

GetNumberBytes:

Restituisce il numero o un dato valido presente nel buffer.

Parametri :   non ci sono parametri

Valore di ritorno: UINT

PeekByte:

Legge il prossimo byte disponibile nel circolar buffer senza incrementare l’indice corrente.

Valore di ritorno: 255/512 se il buffer è vuoto.

Parametri: questa macro non ha parametri.

Valore di ritorno: UINT

PutByte

Aggiunge un byte alla prossima posizione libera nel circular buffer.

Se il byte è inserito correttamente restituisce 1, altrimenti il buffer è pieno e il valore di ritorno è  0.

Parametri: BYTE Data

Return value: BYTE

GetByte:

Legge il prossimo byte disponibile dal circular buffer.

Ritorna 255 se il buffer è vuoto.

Parametri: questa macro non ha parametri.

Valore di ritorno: UINT

FlushBuffer:

Pulisce il contenuto del buffer e re-inizializza l’indice.

Parametri: questa macro non ha parametri.

Return value: questa chiamata non restituisce un valore

simulazione

GetConsoleHandle: ottiene la gestione alla console permettendo di visualizzare i dati sul pannello, etc.

Parametri: questa macro non ha parametri.

Return value: HANDLE

properties reference

Buffer size: riferito alla variabile BufferSize di tipo Unsigned integer.

Imposta il numero di byte nel circolar buffer.

 

Storage Type: riferito alla variabile StorageType di tipo “Fix list of ints”. (Lista di interi)

Quando il buffer è pieno questa proprietà decide cosa fare.

Immagazzina il “first x value” –mantiene l’informazione nel buffer il nuovo dato sarà scaricato.

Immagazzina “last X value” – scarica la posizione più vecchia nel buffer e sovrascrive con il dato nuovo.

 

Memory Type: riferito alla variabile MemType di tipo “Fixed list of ints” .

Non ci sono altre informazioni.

 

Return Type: riferito alla variabile Returns di tipo “Fixed list of ints”.

Specifica il modo  di indicare il timeout.

  • 8 bit mode: timeout è rappresentato dal valore 255.
  • 16 bit mode: Timeout è rappresentato dal valore 512 permettendo al valore 255 di rappresentare un dato valido.
keypad circular look value

rick 3Riccardo Monti