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

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

?? serialbuffer.cpp

?? 關于串口的一個源碼例子
?? 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一区二区三区免费野_久草精品视频
日韩黄色免费电影| 中文字幕一区日韩精品欧美| 不卡一区在线观看| 国产精品一区一区| 国产一区久久久| 国产乱码精品一区二区三| 国产精品综合一区二区| 久久99久久99| 国产精品自拍网站| 懂色一区二区三区免费观看| 国产不卡高清在线观看视频| 成人美女在线视频| 色综合久久88色综合天天6| 在线视频国内自拍亚洲视频| 在线精品视频一区二区三四| 精品视频一区二区三区免费| 欧美日韩的一区二区| 日韩免费在线观看| 精品电影一区二区三区 | 国产精品久久99| 中文字幕五月欧美| 亚洲在线视频一区| 免费观看一级欧美片| 国产一区二区主播在线| 99国产精品视频免费观看| 色999日韩国产欧美一区二区| 欧美性猛交一区二区三区精品| 精品视频一区三区九区| 精品美女一区二区三区| 国产精品三级电影| 亚洲午夜电影网| 久久国产剧场电影| 成人av资源网站| 欧美高清视频一二三区| 精品电影一区二区| 夜夜亚洲天天久久| 韩日欧美一区二区三区| 色综合天天天天做夜夜夜夜做| 欧美日韩和欧美的一区二区| 精品国产乱码久久久久久久 | 久久久美女毛片| 亚洲视频在线一区| 日韩vs国产vs欧美| 99精品视频免费在线观看| 欧美剧情电影在线观看完整版免费励志电影| 日韩一区二区三区电影在线观看 | 久久久激情视频| 亚洲成人7777| 国产精品99久久久久久久女警| 91久久精品网| 国产欧美精品区一区二区三区| 亚洲一区国产视频| 波多野结衣欧美| 精品免费日韩av| 五月综合激情网| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 国产黄人亚洲片| 5月丁香婷婷综合| 一区二区三区精品在线| 国产麻豆9l精品三级站| 欧美一区二区三区在线电影| 一区二区三区中文字幕电影| 狠狠狠色丁香婷婷综合激情| 欧美精选一区二区| 亚洲综合图片区| 成人国产视频在线观看| 久久综合色婷婷| 美女视频黄 久久| 日韩一区二区在线看| 亚洲www啪成人一区二区麻豆| 91视视频在线观看入口直接观看www | 久久先锋影音av鲁色资源网| 日韩和欧美一区二区三区| 91黄色免费看| 一区二区三区在线免费播放 | 国产免费成人在线视频| 国产精品123| 精品99999| 国产最新精品精品你懂的| 精品乱码亚洲一区二区不卡| 欧美aaaaaa午夜精品| 欧美一区二区三区思思人| 麻豆专区一区二区三区四区五区| 91精品在线观看入口| 天天色图综合网| 日韩一区二区三区免费看| 日韩电影在线观看网站| 日韩亚洲欧美一区二区三区| 久久爱www久久做| 久久女同精品一区二区| 国产精品1区2区3区在线观看| 国产亚洲欧美中文| 成人免费毛片app| 中文字幕亚洲一区二区va在线| 91在线视频18| 午夜视黄欧洲亚洲| 日韩一区二区三区视频在线 | 国产精选一区二区三区| 国产精品美女www爽爽爽| 91在线porny国产在线看| 亚洲精品国产成人久久av盗摄| 在线观看欧美日本| 免费观看在线综合| 国产亚洲成av人在线观看导航| av电影在线观看不卡| 亚洲国产精品嫩草影院| 欧美大肚乱孕交hd孕妇| 成人精品国产一区二区4080| 一区二区三区高清| 精品伦理精品一区| 成人精品一区二区三区中文字幕| 亚洲精品欧美综合四区| 日韩欧美一区二区在线视频| 国产福利91精品一区二区三区| 亚洲视频一区在线观看| 日韩三级在线免费观看| 91视频在线观看免费| 美日韩一区二区| ●精品国产综合乱码久久久久| 91麻豆精品国产91久久久使用方法| 国产呦精品一区二区三区网站 | 欧美在线不卡一区| 激情欧美一区二区| 亚洲六月丁香色婷婷综合久久 | 欧美日韩五月天| 丁香婷婷综合色啪| 日韩电影一区二区三区| 中文字幕日本不卡| 日韩亚洲欧美高清| 91激情五月电影| 丁香五精品蜜臀久久久久99网站| 一区二区成人在线观看| 国产性色一区二区| 91精品国产91综合久久蜜臀| 色综合久久中文字幕综合网| 国产精品系列在线播放| 男女男精品网站| 亚洲国产视频a| 日韩一区欧美一区| 国产亚洲污的网站| 精品国产百合女同互慰| 制服丝袜亚洲播放| 色狠狠一区二区| av在线播放成人| 国产不卡免费视频| 国产精品正在播放| 免费人成精品欧美精品| 视频一区二区不卡| 午夜成人在线视频| 亚洲成人一二三| 亚洲中国最大av网站| 亚洲欧美国产77777| 国产精品美女久久久久久2018 | 不卡电影一区二区三区| 色欧美乱欧美15图片| 99视频一区二区| 99re8在线精品视频免费播放| 盗摄精品av一区二区三区| 国产在线一区观看| 国产二区国产一区在线观看| 国产美女视频一区| 高清视频一区二区| 99久久婷婷国产综合精品电影 | 亚洲图片激情小说| 亚洲美女视频在线| 亚洲一区二区美女| 午夜国产精品一区| 日韩激情视频网站| 久久精品二区亚洲w码| 国内成人免费视频| 成人动漫一区二区| 91国偷自产一区二区三区成为亚洲经典| 成人app在线| 欧美亚洲动漫精品| 日韩视频不卡中文| 国产欧美日本一区视频| 亚洲精品日产精品乱码不卡| 亚洲午夜私人影院| 九一九一国产精品| 99久久久久久| 欧美色电影在线| 欧美成人福利视频| 国产精品乱码久久久久久 | 色系网站成人免费| 欧美一区二区三区四区视频| 欧美精品一区二区三区蜜桃| 国产精品久久久久一区二区三区 | 亚洲国产精品综合小说图片区| 亚洲3atv精品一区二区三区| 麻豆91在线播放| av午夜一区麻豆| 欧美一区二区三区视频免费播放 | 成人午夜视频福利| 日本伦理一区二区| 久久一夜天堂av一区二区三区| 亚洲欧洲成人精品av97| 蜜桃视频免费观看一区| zzijzzij亚洲日本少妇熟睡| 91麻豆精品国产91久久久使用方法| 亚洲国产精品天堂|