# RingBuffer 环形缓冲区
## 简介
项目未能实现线程安全,仅供学习参考,工程项目请谨慎使用!!!
RingBuffer 是一个基于C语言开发的环形缓冲区,适用于各嵌入式平台的串口收发等应用场景;在基本功能的基础上还提供了一个分段记录框架,方便数据管理;代码在AT32F403A平台上编译运行,经过简单的串口收发测试后暂未发现显性BUG;
## 开始
### 基础功能 RingBuffer Base 的使用方法
```c
//引用相关头文件
#include <stdint.h>
#include <stdio.h>
#include "ring_buffer.h"
//创建一个数组作为数据存储空间
#define BUFFER_SIZE 128
static uint8_t buffer[BUFFER_SIZE];
//创建环形缓冲区句柄
static ring_buffer rb;
int main(void)
{
//初始化环形缓冲区参数
RB_Init(&rb, buffer, BUFFER_SIZE);
//写入向环形缓冲区写入数据
RB_Write_String(&rb, "hello world", 11);
RB_Write_Byte(&rb, '!');
RB_Write_Byte(&rb, 0x00);
//删除环形缓冲区部分数据
RB_Delete(&rb, 2);
//获取已储存的数据长度
uint32_t num = RB_Get_Length(&rb);
//读出环形缓冲区中的数据并打印
uint8_t get[16];
RB_Read_String(&rb, get, num);
printf("%s", get);
//控制台输出内容
//llo world!
return 0;
}
```
### 分段框架 RingBuffer Chapter 的使用方法
```c
//引用相关头文件
#include <stdint.h>
#include <stdio.h>
#include "ring_buffer_chapter.h"
//创建两个数组,一个作为数据存储空间,一个用于记录分段信息
#define BASE_SIZE 128
static uint8_t buffer_base[BASE_SIZE];
#define CHAPTER_SIZE 16
static uint32_t buffer_chapter[CHAPTER_SIZE];
//创建分段环形缓冲区句柄
static ring_buffer_chapter rbc;
int main(void)
{
//初始化分段环形缓冲区参数
RBC_Init(&rbc, buffer_base, BASE_SIZE, buffer_chapter, CHAPTER_SIZE);
//写入向环形缓冲区写入数据1,并记录分段结尾
RBC_Write_String(&rbc, "string1", 7);
RBC_Write_Byte(&rbc, '!');
RBC_Write_Byte(&rbc, 0x00);
RBC_Ending_Chapter(&rbc);
//写入向环形缓冲区写入数据2,并记录分段结尾
RBC_Write_String(&rbc, "string2", 7);
RBC_Write_Byte(&rbc, '!');
RBC_Write_Byte(&rbc, 0x00);
RBC_Ending_Chapter(&rbc);
//获取已储存的分段数量
uint32_t num = RBC_Get_Chapter_Number(&rbc);
//读出环形缓冲区中的数据并打印
uint8_t get[16];
for (uint32_t i = 0; i < num; i++)
{
RBC_Read_Chapter(&rbc, get, NULL);
printf("%s\r\n", get);
}
//控制台输出内容
//string1!
//string2!
return 0;
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
RingBuffer.zip
共8个文件
c:2个
h:2个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 95 浏览量
2024-05-10
21:35:23
上传
评论
收藏 12KB ZIP 举报
温馨提示
RingBuffer基于C语言开发的环形缓冲区基于C语言开发的环形缓冲区基于C语言开发的环形缓冲区基于C语言开发的环形缓冲区基于C语言开发的环形缓冲区基于C语言开发的环形缓冲区
资源推荐
资源详情
资源评论
收起资源包目录
RingBuffer.zip (8个子文件)
RingBuffer
ring_buffer.h 2KB
.vscode
settings.json 132B
LICENSE 11KB
ring_buffer.c 8KB
ring_buffer_chapter.h 2KB
.gitignore 8B
Readme.md 3KB
ring_buffer_chapter.c 9KB
共 8 条
- 1
资源评论
灬Sunnnnn
- 粉丝: 3w+
- 资源: 97
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功