Buffer

Solo disponible en BuenasTareas
  • Páginas : 2 (327 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de abril de 2011
Leer documento completo
Vista previa del texto
Buffer

Karlitos Arredondo

Buffer Circular

Un buffer circular es un recurso de programación tan viejo como útil en el intercambio de todotipo de datos, no solo en comunicaciones del USART. No es más que un buffer o array ordinario que adopta su nombre por la forma en que se ponen y sacan sus elementos.
Un buffer circular trabajabásicamente con dos índices, que aquí llamaremos Inpointer y Outpointer. No son como los punteros que define el lenguaje C, son simples variables que operan como índices para acceder a los elementos delbuffer. Ambos índices tienen avance incremental y cíclico, es decir, se incrementan de uno en uno y luego de apuntar al último elemento del buffer vuelven a apuntar al primero. Eso explica su nombre.Cada nuevo dato a guardar en el buffer será depositado en la casilla actualmente apuntada por Inpointer. A continuación Inpointer se incrementa en 1. (Inpointer para datos In = entrada.)
Por otrolado, cada dato que salga del buffer será el de la casilla actualmente apuntada por Outpointer. A continuación Outpointer se incrementa en 1. (Outpointer para datos Out = salida.)

Ejemploprintf("Attempting to create a buffer...\n\r");
xBufferHandle myRingBuffer = xCircularBufferCreate( 10, sizeof( unsigned int ));
if( myRingBuffer != NULL )
{
printf("Buffer Successfully Created\n\r");printf("Initializing Buffer Elements\n\r");
for(i=10; i start)
{
printf("
Enter the element!
");
scanf("%d",&arr[start]);
++start;
}
if(MAX==start)
printf("
Buffer is full soread the elements from the buffer!
");
}
void buff_read()
{
if(MAX==start)
{
printf("
Printing the buffer elements!
");
for(start=0;MAX>start;start++)
printf("

%d",arr[start]);
if(MAX==start)
{
start=0;
buff_write();
}
}
else
printf("
but buffer is not full
so,continue the write elements in
buffer!
");
}
void buff_check()
{
if(start!=0)...
tracking img