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

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

?? pserialport.cpp

?? Dopod手機讀取端口數據
?? CPP
字號:
// PSerialPort.cpp: implementation of the CPSerialPort class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Test.h"
#include "PSerialPort.h"

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

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

CPSerialPort::CPSerialPort()
{
	m_hComm=INVALID_HANDLE_VALUE;
	m_hReadThread=NULL;
	m_bReceiving=FALSE;
	m_nBufferSize=256; //緩沖大小
}

CPSerialPort::~CPSerialPort()
{
	ClosePort();
}

DWORD WINAPI CPSerialPort::ReadPortThread(LPVOID lpParameter)
{
	CPSerialPort* m_pSerial;

	m_pSerial=(CPSerialPort*)lpParameter;

	BOOL fReadState;
	DWORD dwLength;

	char* buf=new char[m_pSerial->m_nBufferSize];

	while((m_pSerial->m_hComm!=INVALID_HANDLE_VALUE)&&(m_pSerial->m_bReceiving))
	{		
		fReadState=ReadFile(m_pSerial->m_hComm,buf,m_pSerial->m_nBufferSize,&dwLength,NULL);
		if(!fReadState)
		{
			AfxMessageBox(_T("無法從串口讀取數據!"));
		}
		else
		{
			if(dwLength!=0)
			{
				//回送數據
				if(m_pSerial->m_lpDataArriveProc!=NULL)
				{
					m_pSerial->m_lpDataArriveProc(buf,dwLength,m_pSerial->m_dwUserData);
				}
			}
		}		
	}

	delete[] buf;

	return 0;
}

BOOL CPSerialPort::OpenPort(LPCTSTR Port,int BaudRate,int DataBits,int StopBits,int Parity,LPDataArriveProc proc,DWORD userdata)
{
	m_lpDataArriveProc=proc;
	m_dwUserData=userdata;
	if(m_hComm==INVALID_HANDLE_VALUE)
	{
		m_hComm=CreateFile(Port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
		if(m_hComm==INVALID_HANDLE_VALUE)
		{
			AfxMessageBox(_T("無法打開端口!請檢查是否已被占用。"));
			return FALSE;
		}
		GetCommState(m_hComm,&dcb);
		dcb.BaudRate=BaudRate;
		dcb.ByteSize=DataBits;
		dcb.Parity=Parity;
		dcb.StopBits=StopBits;
		dcb.fParity=FALSE;
		dcb.fBinary=TRUE;
		dcb.fDtrControl=0;
		dcb.fRtsControl=0;
		dcb.fOutX=dcb.fInX=dcb.fTXContinueOnXoff=0;
		
		//設置狀態參數
		SetCommMask(m_hComm,EV_RXCHAR);		
		SetupComm(m_hComm,16384,16384);		
		if(!SetCommState(m_hComm,&dcb))
		{
			AfxMessageBox(_T("無法按當前參數配置端口,請檢查參數!"));
			PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
			ClosePort();
			return FALSE;
		}
		
		//設置超時參數
		GetCommTimeouts(m_hComm,&CommTimeOuts);		
		CommTimeOuts.ReadIntervalTimeout=100;
		CommTimeOuts.ReadTotalTimeoutMultiplier=1;
		CommTimeOuts.ReadTotalTimeoutConstant=100;
		CommTimeOuts.WriteTotalTimeoutMultiplier=0;
		CommTimeOuts.WriteTotalTimeoutConstant=0;		
		if(!SetCommTimeouts(m_hComm,&CommTimeOuts))
		{
			AfxMessageBox(_T("無法設置超時參數!"));
			PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
			ClosePort();
			return FALSE;
		}
		
		PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);		
		return TRUE;		
	}
	
	return FALSE;
}

BOOL CPSerialPort::ClosePort()
{
	Deactivate();
	if(m_hComm!=INVALID_HANDLE_VALUE)
	{
		SetCommMask(m_hComm,0);		
		PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
		CloseHandle(m_hComm);
		m_hComm=INVALID_HANDLE_VALUE;
		return TRUE;
	}
	
	return TRUE;	
}

BOOL CPSerialPort::Activate()
{
	if(m_hComm==INVALID_HANDLE_VALUE)
	{
		return FALSE;
	}

	if(!m_bReceiving)
	{
		//開始接收線程
		PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);
		m_bReceiving=TRUE;
		m_hReadThread=CreateThread(NULL,0,ReadPortThread,this,0,NULL);
	}
	if(m_hReadThread!=NULL)
	{		
		return TRUE;
	}
	else
	{
		m_bReceiving=FALSE;
		return FALSE;
	}

	return FALSE;
}

BOOL CPSerialPort::Deactivate()
{
	if(m_hComm==INVALID_HANDLE_VALUE)
	{
		return FALSE;
	}

	//停止接收線程
	if(m_bReceiving)
	{
		m_bReceiving=FALSE;
		WaitForSingleObject(m_hReadThread,500);
		CloseHandle(m_hReadThread);
		m_hReadThread=NULL;
		return TRUE;
	}

	return FALSE;
}

BOOL CPSerialPort::IsActive()
{
	return m_bReceiving;
}

DWORD CPSerialPort::WritePort(char *data,int length)
{
	if(m_hComm==INVALID_HANDLE_VALUE)
	{
		return 0;
	}

	BOOL fWriteState;
	DWORD dwBytesWritten=0;

	fWriteState=WriteFile(m_hComm,data,length*sizeof(char),&dwBytesWritten,NULL);
	
	return dwBytesWritten;
}

DWORD CPSerialPort::ReadPort(char *data,int length)
{
	BOOL fReadState;
	DWORD dwLength,dwBytesRead;
	int TimeOutCount;

	dwBytesRead=0;
	TimeOutCount=0;
	
	while(m_hComm!=INVALID_HANDLE_VALUE)
	{
		char* buf=new char[length];
		fReadState=ReadFile(m_hComm,data,length,&dwLength,NULL);
		if(!fReadState)
		{
			break;
		}
		else
		{
			dwBytesRead+=dwLength;
			data+=dwLength;			
		}
		if(dwBytesRead==length)
		{
			break;
		}
		if(dwLength!=0)
		{
			TimeOutCount=0;
		}
		else
		{
			TimeOutCount++;
			Sleep(5);
		}
		if(TimeOutCount==5)
		{
			break;
		}
	}
	return dwBytesRead;
}

DWORD CPSerialPort::WriteFileToPort(LPCTSTR FileName)
{
	if(m_hComm==INVALID_HANDLE_VALUE)
	{
		return 0;
	}

	CFile cf;

	BOOL fWriteState;
	DWORD dwBytesWritten;
	DWORD dwCharToWrite;

	dwCharToWrite=0;

	if(!cf.Open(FileName,CFile::modeRead))
	{
		AfxMessageBox(_T("無法打開Hex文件!"));
		return 0;
	}
	dwCharToWrite=(DWORD)cf.GetLength();
	cf.Seek(0,CFile::begin);
	dwBytesWritten=0;
	
	if(m_hComm!=INVALID_HANDLE_VALUE&&dwCharToWrite!=0)
	{
		char* buf=new char[dwCharToWrite];
		cf.Read(buf,dwCharToWrite);

		fWriteState=WriteFile(m_hComm,buf,dwCharToWrite*sizeof(char),&dwBytesWritten,NULL);
		if(!fWriteState)
		{
			AfxMessageBox(_T("無法向端口寫入數據!"));
		}
		delete[] buf;		
	}
	cf.Close();
	return dwBytesWritten;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级中文字幕| 亚洲欧美综合另类在线卡通| 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人午夜电影小说| 亚洲成人av电影| 亚洲精品一区二区三区99| 精品国产网站在线观看| 99久免费精品视频在线观看| 日韩成人dvd| 一区二区在线电影| 久久久久久日产精品| 色网站国产精品| 狠狠色狠狠色综合| 午夜视频一区二区三区| 国产片一区二区| 日韩视频中午一区| 欧美日韩aaaaa| 91免费视频网址| 成人午夜视频在线观看| 精品国产乱码久久久久久影片| 91社区在线播放| 岛国一区二区在线观看| 经典三级一区二区| 美女被吸乳得到大胸91| 亚洲国产wwwccc36天堂| 一区二区三区影院| 国产精品国产三级国产普通话三级| 制服丝袜亚洲播放| 国产精品一品二品| 日韩免费福利电影在线观看| 在线电影国产精品| 国模套图日韩精品一区二区 | 国产无人区一区二区三区| 天天色天天操综合| 午夜精品久久一牛影视| 亚洲成av人在线观看| 三级欧美韩日大片在线看| 亚洲午夜精品久久久久久久久| 一区二区三区日韩在线观看| 亚洲日本中文字幕区| 亚洲激情在线播放| 日韩精品久久久久久| 日本一区二区三区四区在线视频| 国产欧美综合在线| 国产精品久久久久久妇女6080| 亚洲欧美日本在线| 亚洲国产aⅴ天堂久久| 日韩中文字幕不卡| 精品va天堂亚洲国产| 久久精品无码一区二区三区| 综合色中文字幕| 视频在线观看一区二区三区| 国产一级精品在线| 91官网在线观看| 欧美精品一区二区三区久久久| 国产精品免费丝袜| 午夜久久电影网| 国产超碰在线一区| 91精品国产综合久久久久久| 成人激情综合网站| 欧美一级黄色录像| 亚洲精品乱码久久久久久黑人| 男女激情视频一区| 91电影在线观看| 欧美国产综合一区二区| 丝袜脚交一区二区| 91捆绑美女网站| 国产亚洲va综合人人澡精品| 日韩美女天天操| 亚洲专区一二三| 91视频在线观看免费| 精品国产麻豆免费人成网站| 亚洲一二三四在线| 欧美性猛交xxxxxx富婆| 国产精品精品国产色婷婷| 国产一区二区三区电影在线观看 | 黄一区二区三区| 日韩欧美高清一区| 久草在线在线精品观看| 欧美一区二区三区人| 亚洲不卡一区二区三区| 成人免费电影视频| 久久久不卡影院| 不卡电影免费在线播放一区| 国产日韩精品一区二区三区| 国内精品写真在线观看| 日韩一级免费一区| 久久国内精品自在自线400部| 制服丝袜成人动漫| 国产在线精品一区二区不卡了| 日韩欧美你懂的| 久久成人免费电影| 在线精品观看国产| 亚洲免费av网站| 99视频有精品| 亚洲人成在线播放网站岛国| 丁香另类激情小说| 久久夜色精品一区| 99国产精品久久久久久久久久久| 国产色爱av资源综合区| 丰满亚洲少妇av| 五月天激情综合网| 久久久精品天堂| 欧美日韩在线播| 国产一区二区不卡在线| 亚洲视频一区在线| 91精品国产91久久久久久一区二区 | 色噜噜狠狠成人中文综合| 青青青伊人色综合久久| 精品国产精品网麻豆系列| 久久国产精品色| 亚洲国产精品久久不卡毛片| 精品va天堂亚洲国产| 色系网站成人免费| 久久人人97超碰com| 欧美性淫爽ww久久久久无| 国产91精品一区二区| 久久aⅴ国产欧美74aaa| 欧美老肥妇做.爰bbww| 高潮精品一区videoshd| 三级久久三级久久久| 亚洲福利一二三区| 亚洲日本va在线观看| 国产精品激情偷乱一区二区∴| 日韩欧美一卡二卡| 欧美精选一区二区| 欧美日韩国产另类一区| 色综合久久中文字幕| 99国产精品久久久| caoporen国产精品视频| 不卡一区二区三区四区| 国产乱子伦视频一区二区三区| 精品在线亚洲视频| 精品在线一区二区| 成人午夜电影网站| 亚洲狠狠丁香婷婷综合久久久| 亚洲国产精品99久久久久久久久 | 91在线国产福利| 99久久婷婷国产综合精品| 91免费看`日韩一区二区| 9i在线看片成人免费| 欧洲国产伦久久久久久久| 欧美日韩综合在线免费观看| 欧美日韩国产中文| 日韩欧美卡一卡二| 国产视频一区不卡| 亚洲乱码国产乱码精品精98午夜| 亚洲三级理论片| 一区二区三区四区蜜桃| 亚洲成在人线在线播放| 美女在线一区二区| 成人免费视频caoporn| 在线观看日韩高清av| 欧美本精品男人aⅴ天堂| 国产日本一区二区| 日韩欧美在线影院| 国产精品你懂的在线欣赏| 亚洲成人av电影在线| 国产成人午夜精品影院观看视频| aaa欧美色吧激情视频| 91麻豆蜜桃一区二区三区| 欧美一级艳片视频免费观看| 国产精品久久久久久久久免费桃花| 亚洲图片一区二区| 99视频一区二区| www国产亚洲精品久久麻豆| 亚洲私人影院在线观看| 午夜精品久久久久| 色综合久久天天| 国产欧美中文在线| 久热成人在线视频| 欧美午夜片在线看| 中文字幕亚洲欧美在线不卡| 国产一区二区电影| 欧美精品九九99久久| 亚洲欧美一区二区三区国产精品| 日韩精品一二区| 欧美性三三影院| 亚洲一区二区三区影院| 91网站黄www| 中文字幕成人av| 粉嫩av一区二区三区粉嫩| 亚洲精品一区在线观看| 精品一区二区免费| 精品国产乱码久久久久久老虎| 亚洲午夜视频在线| 欧美日韩mp4| 免费在线观看一区| 国产福利91精品一区| 精品成人佐山爱一区二区| 久久99国产精品麻豆| 久久午夜电影网| 成人精品视频一区| 日韩理论片一区二区| 99re8在线精品视频免费播放| 亚洲青青青在线视频| 欧美少妇bbb| 国产一区视频在线看| 亚洲欧洲精品一区二区三区| 精品国产污网站|