亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serialbuffer.cpp

?? 串口通信高級編程 visual c++
?? CPP
字號:
// SerialBuffer.cpp: implementation of the CSerialBuffer class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SerialBuffer.h"
#include "SerialCommHelper.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif



USE_DEBUGDUMP


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSerialBuffer::CSerialBuffer()
{
	Init();
}
void CSerialBuffer::Init()
{
	::InitializeCriticalSection ( &m_csLock );
	m_abLockAlways	= true;
 	m_iCurPos		= 0;
	m_alBytesUnRead = 0;
	m_szInternalBuffer.erase ();

}
CSerialBuffer::~CSerialBuffer()
{
	::DeleteCriticalSection ( &m_csLock );

}
void CSerialBuffer::AddData( char ch )
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) AddData(char) called "), GetCurrentThreadId ());	
	m_szInternalBuffer += ch;
	m_alBytesUnRead += 1;
	
}

void CSerialBuffer::AddData( std::string& szData,int iLen ) 
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) AddData(%s,%d) called "), GetCurrentThreadId (),szData.c_str (),iLen);	
	m_szInternalBuffer.append ( szData.c_str () ,iLen);
	m_alBytesUnRead += iLen;
	
}

void CSerialBuffer::AddData( char *strData,int iLen ) 
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) AddData(char*,%d) called "), GetCurrentThreadId (),iLen);	
	ASSERT ( strData != NULL );
	m_szInternalBuffer.append ( strData,iLen);
	m_alBytesUnRead += iLen;
	
}

void CSerialBuffer::AddData( std::string &szData ) 
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) AddData(%s) called "), GetCurrentThreadId (),szData.c_str () );	
	m_szInternalBuffer +=  szData;
	m_alBytesUnRead += szData.size ();
	
}
void CSerialBuffer::Flush()
{
	LockBuffer();
	m_szInternalBuffer.erase ();
	m_alBytesUnRead = 0;
	m_iCurPos  = 0;
	UnLockBuffer();
}

long	 CSerialBuffer::Read_N( std::string &szData,long  alCount ,HANDLE & hEventToReset)
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_N() called "), GetCurrentThreadId ());	
	ASSERT ( hEventToReset != INVALID_HANDLE_VALUE ) ;
	
	
	LockBuffer();
	long alTempCount	= min( alCount ,  m_alBytesUnRead) ;
	long alActualSize	= GetSize();
   	
	szData.append (m_szInternalBuffer,m_iCurPos ,alTempCount);
	
	m_iCurPos +=  alTempCount ;
	
	m_alBytesUnRead -= alTempCount;
	if (m_alBytesUnRead == 0 )
	{
				ClearAndReset ( hEventToReset );
	}
 
	UnLockBuffer();
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_N returned %d bytes (data:%s)  "), GetCurrentThreadId (),alTempCount,((szData)).c_str());	
	return alTempCount;
}





bool CSerialBuffer::Read_Available( std::string &szData,HANDLE & hEventToReset)
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_Upto called "), GetCurrentThreadId ());

	LockBuffer();
  szData += m_szInternalBuffer ;
	
	ClearAndReset ( hEventToReset );
	
	UnLockBuffer();
	
  ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_Available returned (data:%s)  "), GetCurrentThreadId (),((szData)).c_str());	
	return ( szData.size () > 0 );
}


void CSerialBuffer::ClearAndReset(HANDLE& hEventToReset)
{
	m_szInternalBuffer.erase();
	m_alBytesUnRead = 0;
	m_iCurPos				= 0;
	::ResetEvent ( hEventToReset );
	
}

bool CSerialBuffer::Read_Upto( std::string &szData,char chTerm,long  &alBytesRead ,HANDLE & hEventToReset)
{
	return Read_Upto_FIX(szData,chTerm,alBytesRead ,hEventToReset);
	
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_Upto called "), GetCurrentThreadId ());

	LockBuffer();
   	
	alBytesRead = 0 ;
	bool abFound = false;
	if ( m_alBytesUnRead > 0 ) 
	{//if there are some bytes un-read...
				
			int iActualSize = GetSize ();
			

			for ( int i = m_iCurPos ; i < iActualSize; ++i )
			{
				alBytesRead++;
				szData .append ( m_szInternalBuffer,i,1);
				m_alBytesUnRead -= 1;
				if ( m_szInternalBuffer[i] == 	chTerm) 
				{
					abFound = true;
					break;
				}
			}
			if ( m_alBytesUnRead == 0 ) 
			{
				ClearAndReset ( hEventToReset );
			}
			else 
			{ 
				//if we are here it means that there is still some data in the local buffer and
				//we have already found what we want... maybe this is ok but we want to catch this
				//scenario --- fix is in TCP/ip SocketBuffer.
				ASSERT(0); 
			} 
	}

	UnLockBuffer();
  ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_Upto returned %d bytes (data:%s)  "), GetCurrentThreadId (),alBytesRead,((szData)).c_str());	
	return abFound;
}
bool CSerialBuffer::Read_Upto_FIX( std::string &szData,char chTerm,long  &alBytesRead ,HANDLE & hEventToReset)
{
	ATLTRACE6 (_T("CSerialBuffer : (tid:%d) Read_Upto called "), GetCurrentThreadId ());

	LockBuffer();
		alBytesRead = 0 ;

   	
 	bool abFound = false;
	if ( m_alBytesUnRead > 0 ) 
	{//if there are some bytes un-read...
		
		int iActualSize = GetSize ();
 		int iIncrementPos = 0;
		for ( int i = m_iCurPos ; i < iActualSize; ++i )
		{
			//szData .append ( m_szInternalBuffer,i,1);
			szData+=m_szInternalBuffer[i];
			m_alBytesUnRead -= 1;
			if ( m_szInternalBuffer[i] == 	chTerm) 
			{
				iIncrementPos++;
				abFound = true;
				break;
			}
			iIncrementPos++;
		}
		m_iCurPos += iIncrementPos;
		if ( m_alBytesUnRead == 0 ) 
		{
			ClearAndReset ( hEventToReset );
		}
	}
	UnLockBuffer();	
	return abFound;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品影视av免费| 91 com成人网| 国模少妇一区二区三区| 夜夜精品视频一区二区| 一区二区欧美国产| 亚洲国产va精品久久久不卡综合| 亚洲女子a中天字幕| 亚洲免费观看高清完整| 亚洲欧美二区三区| 一区二区三区免费看视频| 亚洲自拍偷拍欧美| 亚洲午夜一二三区视频| 亚洲国产精品一区二区www| 亚洲一级电影视频| 日韩制服丝袜av| 激情综合色播五月| 国产成人av一区二区三区在线 | 亚洲柠檬福利资源导航| 亚洲成av人片www| 蜜臀精品久久久久久蜜臀| 国产毛片精品一区| 97久久超碰精品国产| 欧美在线观看视频在线| 日韩一区二区在线播放| 久久久天堂av| 洋洋av久久久久久久一区| 蜜臀99久久精品久久久久久软件| 国产精品一品二品| 欧美日韩在线播放三区四区| 久久综合av免费| 亚洲在线免费播放| 国产999精品久久久久久绿帽| 在线观看国产一区二区| 久久久亚洲高清| 亚洲图片欧美色图| 国产综合色视频| 欧美亚男人的天堂| 欧美国产视频在线| 手机精品视频在线观看| av日韩在线网站| 日韩一区二区电影在线| 亚洲精品国产品国语在线app| 天天综合色天天| 成人国产精品免费网站| 欧美v亚洲v综合ⅴ国产v| 亚洲一区二区三区美女| 狠狠色综合播放一区二区| 欧美伊人久久久久久久久影院 | 国产肉丝袜一区二区| 五月天中文字幕一区二区| 不卡一区二区中文字幕| 久久一区二区三区四区| 亚瑟在线精品视频| 色婷婷综合久久久中文一区二区| 久久久99久久| 韩国精品在线观看| 欧美精品丝袜久久久中文字幕| 中文字幕在线视频一区| 国产一区二区中文字幕| 日韩欧美在线影院| 日本不卡视频一二三区| 精品污污网站免费看| 欧美国产日产图区| 国产在线播精品第三| 欧美电影一区二区| 亚洲图片有声小说| 精品视频免费在线| 综合久久综合久久| gogo大胆日本视频一区| 日本一区二区三区电影| 韩日av一区二区| 欧美大度的电影原声| 手机精品视频在线观看| 欧美精品日韩综合在线| 国产精品欧美极品| 99久久伊人久久99| 亚洲欧美一区二区三区孕妇| 成人av综合在线| 亚洲欧美日韩国产另类专区 | 老司机午夜精品99久久| 日韩无一区二区| 激情图片小说一区| 国产精品久久一级| 99精品视频中文字幕| 一区二区三区免费网站| 7777精品伊人久久久大香线蕉的 | 91精品国产综合久久久蜜臀图片| 午夜精品久久久久久久久| 欧美日韩亚洲丝袜制服| 亚洲成人自拍网| 欧美视频三区在线播放| 青青草伊人久久| 欧美精品色一区二区三区| 久久成人免费电影| 国产欧美日韩另类一区| 91黄色免费版| 秋霞av亚洲一区二区三| 日本一区二区三级电影在线观看 | 久久97超碰国产精品超碰| 日韩免费性生活视频播放| 国产精品 日产精品 欧美精品| 久久久久久久久97黄色工厂| av中文字幕亚洲| 一区二区三区中文在线观看| 欧美精品 日韩| 精品一区二区免费| 亚洲欧洲日韩女同| 欧美一区二区三区不卡| 国产呦精品一区二区三区网站| 国产精品国产精品国产专区不片| 欧美丝袜丝nylons| 国产成人夜色高潮福利影视| 亚洲成年人网站在线观看| 久久精品欧美日韩精品| 欧美日韩精品久久久| 国产成人激情av| 日韩国产精品久久久久久亚洲| 国产欧美久久久精品影院| 欧美日高清视频| 91香蕉视频黄| 国产精品亚洲人在线观看| 午夜亚洲福利老司机| 国产欧美精品一区二区色综合| 91精品免费观看| 色欧美日韩亚洲| 成人免费不卡视频| 精一区二区三区| 爽爽淫人综合网网站| 一区二区三区在线免费观看| 久久久精品人体av艺术| 欧美精品高清视频| 91在线观看视频| 粉嫩一区二区三区性色av| 久久精品国产久精国产爱| 亚洲午夜私人影院| 一区二区三区美女| 亚洲日本在线看| 亚洲欧洲日产国产综合网| 国产午夜精品理论片a级大结局 | 国产一区二区在线影院| 久久不见久久见中文字幕免费| 亚洲乱码国产乱码精品精小说| 国产欧美一区二区精品婷婷| 久久青草欧美一区二区三区| 精品国产乱码久久久久久久久| 欧美一区二区三区啪啪| 欧美精品xxxxbbbb| 欧美一区二区三区视频在线 | 亚洲电影你懂得| 一区二区三区欧美视频| 亚洲一区免费视频| 亚洲福利一二三区| 日韩专区一卡二卡| 免费av成人在线| 国产一区视频导航| 国产高清亚洲一区| 国产高清成人在线| 国产精品1024久久| 成人午夜在线视频| 91香蕉视频在线| 欧美日韩综合在线| 欧美狂野另类xxxxoooo| 91精品国产91久久综合桃花| 欧美一级二级三级蜜桃| 久久麻豆一区二区| 中国色在线观看另类| 亚洲免费成人av| 日本sm残虐另类| 国产精品一区二区视频| 99久久99久久免费精品蜜臀| 欧美午夜精品久久久久久超碰| 欧美伦理电影网| 久久婷婷国产综合国色天香| 国产精品久久免费看| 亚洲国产wwwccc36天堂| 韩国一区二区在线观看| jlzzjlzz亚洲日本少妇| 欧美精品日韩精品| 日本一区二区免费在线| 亚洲电影激情视频网站| 国产精一区二区三区| 在线观看亚洲精品视频| 欧美大度的电影原声| 亚洲欧美日韩小说| 国产一区视频导航| 欧美日韩一区二区在线观看| 26uuu久久综合| 亚洲午夜免费电影| 国产精品99久久不卡二区| 欧美视频一区二区三区| 久久久午夜精品| 性做久久久久久免费观看| 国产成人免费在线观看| 91精品免费在线观看| 一区二区在线观看免费| 国产精品一区免费在线观看| 欧美日本在线观看| 中文字幕人成不卡一区| 国产高清无密码一区二区三区| 欧美剧情片在线观看|