C 环形缓存区
来源:互联网 发布:Ping用什么端口 编辑:程序博客网 时间:2024/05/12 23:18
直接上代码
#pragma once#ifndef QLIST_H_#define QLIST_H_void commInit();void commDataIn(int * pData, int len);int commGetDataLen();int commGetData(int *pRevcBuff, int len);#endif
#include "stdafx.h"#include "Qlist.h"/**************************************************************** COMM_BUFF_MAX 设置缓存区大小 * void commDataIn(int * pData, int len); 存入数据(存入指针数组,长度)* int commGetDataLen(); 获取当前环形缓存区长度* int commGetData(int *pRevcBuff, int len); 获取数据(获取后返回的指针数组,要获取长度). 返回值:成功:返回长度; 失败:-1 (超过缓存内的数据)****************************************************************/#define COMM_BUFF_MAX 128int comm_bufferRecv[COMM_BUFF_MAX];int comm_bufferNextWritePos=0;int comm_bufferNextReadPos=0;int comm_bufferDataCount=0;//传入数据void commDataIn(int * pData, int len){for (int i = 0; i < len; i++){if (comm_bufferDataCount < COMM_BUFF_MAX){comm_bufferRecv[comm_bufferNextWritePos++] = pData[i];comm_bufferDataCount++;if (comm_bufferNextWritePos >= COMM_BUFF_MAX){comm_bufferNextWritePos = 0;}}}}int commGetDataLen(){return comm_bufferDataCount;}int commGetData(int *pRevcBuff, int len){int i;if (len <= comm_bufferDataCount){for (i = 0; i<len; i++){pRevcBuff[i] = comm_bufferRecv[comm_bufferNextReadPos++];comm_bufferDataCount--;if (comm_bufferNextReadPos >= COMM_BUFF_MAX){comm_bufferNextReadPos = 0;}}return len;}else{return -1; //超出长度}}
commDataIn(buf, n); //存入数据int len = commGetData(buf, n); //取出数据
0 0
- C 环形缓存区
- 环形缓存区设计源码
- 环形缓存区bufferC语言实现
- 环形缓存区bufferC语言实现
- 环形缓存区bufferC语言实现
- 环形缓存(java版)
- 环形缓存(C#版)
- c# 同步功能的环形缓存区ReadWrite RingBuffer
- C语言 环形队列
- C写 环形双链表
- C语言 环形缓冲区
- wjp:环形缓存区bufferC语言实现——致敬曾CQ!
- 环形缓冲区和c笔记
- 环形缓冲区的c实现
- 【c++】环形队列类模板
- 环形
- 【C/C++】缓冲区设计--环形队列
- C语言缓存区详解
- SURF源码解析
- sphinx的安装篇
- 使用Java操作Redis
- MCLK1 pin has no output
- UNITY3D绘制简易2D多边形路面
- C 环形缓存区
- linux初学 unit9
- git branch -d 删除一个branch
- 13:最大上升子序列和
- 剑指offer----输出链表之中的倒数第k个节点
- 一台主机安装多个mysql实例
- 网页命名规则
- 机器学习----贝叶斯分类器(判别模型和生成模型)
- Android Studio无法关联Api23源码-提示Souces for android api 23 platform not found