qt 串口 环形缓存_环形缓冲区类(C++)绝对可用(转)

这是一个关于QT环境下环形缓存的C++实现,包含头文件和源文件。代码修复了原版中的错误,适用于C运行时库,并提供了向缓冲区写入和读取数据的方法,以及检查缓冲区状态的功能。
摘要由CSDN通过智能技术生成

//环形缓冲区头文件

#ifndef CCycleBuffer_H

#define CCycleBuffer_H

class CCycleBuffer

{

public:

bool isFull();

bool isEmpty();

void empty();

int getLength();

CCycleBuffer(int size);

virtual~CCycleBuffer();

int write(char* buf,int count);

int read(char* buf,int count);

int getStart()

{

return m_nReadPos;

}

int getEnd()

{

return m_nWritePos;

}

private:

bool m_bEmpty, m_bFull;

char* m_pBuf;

int m_nBufSize;

int m_nReadPos;

int m_nWritePos;

int test;

};

#endif// CCycleBuffer_H

CCycleBuffer.c

//环形缓冲区源文件

//尽量用C运行时库代码,改变了原作者基于WindowsAPI的代码。

//修改了原作者的两处错误,1是read函数最后的else 少了一个leftcount

//第二个错误,是write函数中,m_nWritePos 变量,他重新定义了一个。这些错误编译不会出错。

//但是运行起来,要了亲命啊。

#include "CCycleBuffer.h"

#include

#include

#include

// 定义

CCycleBuffer::CCycleBuffer(int size)

{

m_nBufSize = size;

m_nReadPos =0;

m_nWritePos =0;

m_pBuf =newchar[m_nBufSize];

m_bEmpty =true;

m_bFull =false;

test =0;

}

CCycleBuffer::~CCycleBuffer()

{

delete[] m_pBuf;

}

/************************************************************************/

/* 向缓冲区写入数据,返回实际写入的字节数 */

/************************************************************************/

int CCycleBuffer::write(char* buf,int count)

{

if(count <=0)

return0;

m_bEmpty =false;

<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值