资源简介
优化了 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
- 上一篇:24c02c中文资料PDF
- 下一篇:编译原理First集Follow集求解
相关资源
- O-ComTool_v2.1.0 串口调试助手
- 串口调试助手SComAssistant v3.0绿色免费
- 串口调试助手2.3
- 单片机流水灯
- sscom4.2串口调试助手
- Qt编写串口调试助手V2016终结版
- 基于qt4串口调试助手
- 自己开发串口调试助手
- 摄像头串口调试助手
- 串口调试助手V2.1,ModbusV1,BitBoy
- QT串口调试助手
- 开源QT串口调试助手
- 蓝牙串口调试助手完美版
- 安信可串口调试助手 AiThinker_Serial_T
- 非常好用的串口调试助手
- 基于labview串口调试助手
- xgcom-0.04.2源码
- 聂小猛——串口调试助手
- 串口调试助手CM精装版 V3.7.2
- win10win8win7xp 串口调试助手SerialProV1.
- LABVIEW串口调试助手源码
- 串口调试助手可边接收边存储
- labview串口调试助手
- CPort做的串口调试助手 delphi
- 易语言串口调试助手汉字收发 CRC
- stm32发送at指令 串口调试助手设置 波
- stm32串口调试助手
- 串口调试助手V2.2
- WIFI串口调试助手APK
- 串口调试助手源码(绝对正版)
评论
共有 条评论