环形缓冲,用两个数组只想 buff的位置,判断读和写的位置
当读取的位置和写入的位置相等时,R=W,说明队列里边已无数据;
#define CIRCLEBUFFER_SIZE 8
EventCache Event_buff[CIRCLEBUFFER_SIZE];
int s_readPtr = 0;
int s_writePtr = 0;
int Read_CircleBuffer_Data(void)
{
unsigned char Pos;
if (s_readPtr > CIRCLEBUFFER_SIZE)
s_readPtr = 0;
if (s_readPtr == s_writePtr) //A simple thought that queue is empty
return -1;
//memcpy(r_buff, (unsigned char*)&Event_buff[s_readPtr], sizeof(Event_buff));
//memset((unsigned char*)&Event_buff[s_readPtr], 0, sizeof(Event_buff));
//return sizeof(Event_buff);
return s_readPtr;
}
void Clear_CircleBuffer_Data(void)
{
unsigned char Pos;
if (s_readPtr > CIRCLEBUFFER_SIZE)
s_readPtr = 0;
if (s_readPtr == s_writePtr) //A simple thought that queue is empty
return ;
memset((unsigned char*)&Event_buff[s_readPtr], 0, sizeof(Event_buff));
s_readPtr++;
}