做一个FIFO队列。
typedef struct scan_queue_s {
unsigned char read; // read position
unsigned char write;// write positon
unsigned char num;// buffer size
unsigned char buffer[8];
}queue_t;
//put value into queue
unsigned char write_queue(queue_t * queue, unsigned char value)
{
if(queue->num == 8)//buffer full,return 1;
return 1;
queue->buffer[queue->write++] = value;
queue->num++;
if(queue->write == 8)
queue->write =0;
return 0;
}
//get value from queue
unsigned char read_queue(queue_t *queue, unsigned char *value)
{
if(queue->num == 0)//buffer is empty,return 1;
return 1;
*value = queue->buffer[queue->read--];
queue->num--;
return 0;
}
|