资源简介
优化了 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集求解
相关资源
- 串口调试助手V5.0
- 双串口调试助手 V4.0 _ 可同时调试两个
- 友善串口调试助手V3.7.3,带注册码
- 串口调试助手 Qt5版源码
- 电脑端串口调试助手&手机端网络调试
- 基于Qt5的串口调试助手
- 串口调试助手V2.2源代码
- QT4.6实践编写串口调试助手原创全源码
- 简洁好用的串口调试助手
- 串口调试助手VC源码
- 串口调试助手十六进制数据转成十进
- 串口调试助手+TCP/IP通信+源码
- Qt从零开始制作串口调试助手_各步骤
- stm32 ADC采集DAC电压并显示在串口调试
- 串口调试助手源代码 VS+Qt
- 能判断奇偶校验的串口调试助手
- 51单片机与PC串口通信的protues仿真的工
- 串口调试助手 vc 源代码
- 串口调试助手完整版
- PC蓝牙串口调试助手
- 串口调试助手源码 串口调试助手源码
- 电总协议串口调试助手-PowerBus
- 虚拟串口vspd+串口调试助手
- 串口调试助手-XCOM-丁丁
- 基于CSerialPort修改类的串口调试助手源
- win10串口调试助手
- QT5.9 serialport串口通信模块,编写一个
- 手把手Qt串口调试助手开发源码
- 山外智能车多功能调试助手V1.1.6.
- vs2008编的串口调试助手源程序工程文
评论
共有 条评论