环形缓冲区的创建

创建实例

//创建环形缓存区
#define RBUFF_SET_LEN 8 //缓存最大长度设置

typedef struct
{
unsigned char headpos;//头
unsigned char tailpos;//尾
unsigned char len;    //长度
unsigned char rbuf[RBUFF_SET_LEN];//接收缓存数据区
}ringBuf_st;
ringBuf_st   ringBuf;//创建一个ringBuf的缓冲区

void RingBuff_Init(ringBuf_st *ringBuf_me)//初始化相关信息
{
   ringBuf_me->headpos = 0;
   ringBuf_me->tailpos = 0;
   ringBuf_me->len = 0;
   memset(&ringBuf_me->rbuf[0],0,RBUFF_SET_LEN);
}

unsigned char RingBuff_Write(ringBuf_st *ringBuf_me,unsigned char writeData)//往环中写入一个数据
{
	if(RBUFF_SET_LEN<=ringBuf_me->len) //判断缓冲区是否已满
	{
		 return 0;//写入失败
	}
	ringBuf_me->rbuf[ringBuf_me->tailpos++]=writeData;
	ringBuf_me->tailpos %= RBUFF_SET_LEN;//防止越界非法访问//限制在一个RBUFF_SET_LEN长度内
	ringBuf_me->len++;
	return 1;//写入成功
}

unsigned char RingBuff_Read(ringBuf_st *ringBuf_me,unsigned char *readData)//从环中读取一个数据
{
	if(0==ringBuf_me->len)//判断空
	{
			return 0;//读取失败
	}
	*readData = ringBuf_me->rbuf[ringBuf_me->headpos++];//先进先出FIFO,从缓冲区头出
	ringBuf_me->headpos %= RBUFF_SET_LEN;//防止越界非法访问
	ringBuf_me->len--;
	return 1;//读取成功
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值