• 大小: 52KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签:

资源简介

优化了 SerialPort类, 自己写了一个RingBuffer 类, 两个类结合用在串口收发上基本上是无敌了.

资源截图

代码片段和文件信息

#include 
#include “CRingBuffer.h“

CRingBuffer::CRingBuffer(int buffSize){
  m_writePos=0;
  m_readPos=0;
  m_dataLeng=0;//目前数据量
  m_buffsize=buffSize;
  m_pBuffer=(char*)malloc(buffSize+1);
      memset(m_pBuffer0buffSize+1);
}

CRingBuffer::~CRingBuffer(){

  free(m_pBuffer);
}

int CRingBuffer::Remain(void){

return m_buffsize-m_dataLeng; //剩下多少字节
}

int CRingBuffer::GetDataCount(void){
  return m_dataLeng; //当前缓冲区有多少字节
}

int CRingBuffer::PushData(char* datint len){

if(len<=0) return 0;
   
 if (m_dataLeng+len>m_buffsize)///溢出
 {
 CString str;
 str.Format(“\n---RingBuffer Over Load [%d]---“m_buffsize-m_dataLeng-len);
 TRACE(str);
 len=m_buffsize-m_dataLeng;
// AfxMessageBox(str);
 }


if(m_writePos+len<=m_buffsize){
  memcpy(m_pBuffer+m_writePosdatlen);
  m_writePos+=len;
  if(m_writePos>=m_buffsize)
  m_writePos=0;//归零
}else{

///超过一圈
int wr1Leng=m_buffsize-m_writePos;
int wr2Leng=m_writePos+len-m_buffsize-1;

memcpy(m_pBuffer+m_writePosdatwr1Leng);
memcpy(m_pBufferdat+wr1Lengwr2Leng);

m_writePos=wr2Leng;

}

 m_dataLeng+=len;////增加数据
   
  return len;
}

int CRingBuffer::PopData(char* inBufint len){

 int readLen=len;//计算读取了多少字节
 if(m_dataLeng<1 || len<0 ) return 0; ///没有可读取的数据
       
 if(len>m_dataLeng){
        readLen=m_dataLeng;
 }


    if (m_readPos+readLen    {
       memcpy(inBufm_pBuffer+m_readPosreadLen);
   m_readPos+=readLen;
   m_dataLeng-=readLen;
   return readLen;
}


     int rd1Leng=m_buffsize-m_readPos;
 int rd2Leng=readLen-rd1Leng;


 memcpy(inBufm_pBuffer+m_readPosrd1Leng);

     memcpy(inBuf+rd1Lengm_pBufferrd2Leng);
 m_readPos=rd2Leng;
 m_dataLeng-=readLen;

 return readLen; 
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-03-24 16:59  UART_Debug\
     文件        1885  2016-03-24 14:46  UART_Debug\CRingBuffer.cpp
     文件         424  2016-03-24 14:46  UART_Debug\CRingBuffer.h
     文件        3651  2016-03-19 17:20  UART_Debug\ReadMe.txt
     目录           0  2016-03-24 08:48  UART_Debug\res\
     文件        1102  2016-03-24 16:36  UART_Debug\resource.h
     文件        1078  2016-03-24 08:48  UART_Debug\res\UART_Debug.ico
     文件         402  2016-03-19 17:20  UART_Debug\res\UART_Debug.rc2
     文件        9161  2016-03-24 14:47  UART_Debug\SerialPort.cpp
     文件        1651  2016-03-24 14:48  UART_Debug\SerialPort.h
     文件         212  2016-03-19 17:20  UART_Debug\StdAfx.cpp
     文件        1054  2016-03-19 17:20  UART_Debug\StdAfx.h
     文件       36232  2016-03-24 16:41  UART_Debug\UART_Debug.aps
     文件        1624  2016-03-24 16:58  UART_Debug\UART_Debug.clw
     文件        2119  2016-03-19 17:20  UART_Debug\UART_Debug.cpp
     文件        4498  2016-03-22 16:05  UART_Debug\UART_Debug.dsp
     文件         543  2016-03-19 17:20  UART_Debug\UART_Debug.dsw
     文件       28672  2016-03-24 16:58  UART_Debug\UART_Debug.exe
     文件        1368  2016-03-19 17:20  UART_Debug\UART_Debug.h
     文件       74752  2016-03-24 16:59  UART_Debug\UART_Debug.ncb
     文件       48640  2016-03-24 16:59  UART_Debug\UART_Debug.opt
     文件        2056  2016-03-24 16:58  UART_Debug\UART_Debug.plg
     文件        6053  2016-03-24 16:41  UART_Debug\UART_Debug.rc
     文件       10914  2016-03-24 16:55  UART_Debug\UART_DebugDlg.cpp
     文件        1667  2016-03-24 16:53  UART_Debug\UART_DebugDlg.h

评论

共有 条评论