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

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

?? pserialport.cpp

?? 學習evc時
?? CPP
字號:
// PSerialPort.cpp: implementation of the CPSerialPort class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "SerialPort.h"
#include "PSerialPort.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
static HANDLE hComport;


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一区二区三区免费野_久草精品视频
制服视频三区第一页精品| 中文字幕第一区第二区| 日韩久久久精品| 久久久影视传媒| 亚洲成人综合网站| 极品美女销魂一区二区三区| 日本不卡一区二区三区高清视频| 国产白丝精品91爽爽久久| 色呦呦日韩精品| 欧美日韩久久一区二区| www国产成人免费观看视频 深夜成人网| 国产亚洲一区二区在线观看| 午夜不卡av免费| 成人黄页毛片网站| 欧美一级片免费看| 亚洲一二三区在线观看| 国产伦理精品不卡| 日韩亚洲欧美高清| 亚洲欧美韩国综合色| 久久99国产精品久久99果冻传媒| 欧美日韩亚洲综合一区 | 亚洲国产裸拍裸体视频在线观看乱了| 亚洲成av人片在www色猫咪| 国产精品一二三四| 91搞黄在线观看| 亚洲视频一区二区在线观看| 九九**精品视频免费播放| 欧美日韩卡一卡二| 一区2区3区在线看| caoporen国产精品视频| 国产色婷婷亚洲99精品小说| 日本强好片久久久久久aaa| 成人h动漫精品| 国产精品久久久久久久久图文区| 日产国产欧美视频一区精品| 欧美老女人第四色| 亚洲午夜私人影院| 91碰在线视频| 一卡二卡欧美日韩| 99久久免费视频.com| 欧美国产日韩亚洲一区| 国产精品123区| 精品国产精品网麻豆系列| 国产精品资源在线| 精品国产一区久久| 久久电影网站中文字幕| 久久人人爽爽爽人久久久| 久久精品久久99精品久久| 欧美成人bangbros| 另类人妖一区二区av| 日韩亚洲欧美在线观看| 国产成人99久久亚洲综合精品| 精品国产免费一区二区三区四区| 日韩1区2区3区| 日韩午夜三级在线| 一区二区三区在线视频观看| 91亚洲国产成人精品一区二三| 亚洲色大成网站www久久九九| 欧美亚洲一区二区在线| 亚洲一区二区三区在线看| 欧美做爰猛烈大尺度电影无法无天| 亚洲成a人片在线观看中文| 欧美视频三区在线播放| 日本va欧美va精品| 日韩欧美国产电影| 国产一区二区三区| 亚洲一二三四区| 欧美一区二区三区四区视频| 久久99在线观看| 国产精品美女视频| 色八戒一区二区三区| 麻豆91免费观看| 国产欧美视频一区二区三区| 国产91富婆露脸刺激对白| 亚洲最新视频在线观看| 欧美一区三区二区| 99精品国产视频| 一区二区三国产精华液| 欧美va亚洲va| 91麻豆精品视频| 美女任你摸久久| 一区二区高清免费观看影视大全| 欧美美女一区二区在线观看| 国产剧情av麻豆香蕉精品| 亚洲精品国久久99热| 欧美一区二区三区小说| 91黄色免费观看| 日本欧美一区二区| 夜夜嗨av一区二区三区中文字幕 | xnxx国产精品| 91在线视频在线| 国产一区二区日韩精品| 亚洲午夜精品网| 久久精品亚洲精品国产欧美kt∨| 欧美日韩美少妇| 成人av在线网| 国产精品2024| 免费av网站大全久久| 中文字幕一区二| 国产日产欧美精品一区二区三区| 在线观看亚洲专区| 国产一区二区三区在线看麻豆| 亚洲一区在线视频| 国产日韩影视精品| 欧美剧情片在线观看| 欧美亚一区二区| 成人精品视频一区| 国产高清精品在线| 日本不卡123| 性欧美疯狂xxxxbbbb| 亚洲在线中文字幕| 18欧美乱大交hd1984| 中文字幕一区不卡| 日本一区二区免费在线观看视频| 日韩欧美国产小视频| 欧美日韩精品久久久| 91尤物视频在线观看| 99re热视频精品| 国产精品99久久久久| 亚洲午夜久久久久久久久久久| 国产精品麻豆久久久| 久久久久亚洲蜜桃| 成人欧美一区二区三区1314| 2021国产精品久久精品| 久久伊人中文字幕| 精品国产第一区二区三区观看体验| 在线中文字幕一区| 欧美日韩国产123区| 一本一道久久a久久精品| 在线国产电影不卡| jlzzjlzz亚洲女人18| 成人免费毛片a| 99免费精品在线| 成人国产一区二区三区精品| 色视频一区二区| 在线看国产日韩| 日韩色在线观看| 欧美一二区视频| 色综合天天综合在线视频| 91久久免费观看| 在线观看www91| 日韩一区二区免费电影| 欧美一二三四区在线| 国产亚洲精品精华液| 国产精品久久网站| 国产精品蜜臀av| 亚洲成人动漫精品| 美日韩黄色大片| 国产黄色成人av| 成人精品高清在线| 欧美日韩亚洲国产综合| 欧美丰满一区二区免费视频| 日韩视频一区二区在线观看| 国产精品色在线| 亚洲欧美视频一区| 久99久精品视频免费观看| 久久国产精品99久久人人澡| 麻豆精品一区二区| 高清成人在线观看| 色狠狠一区二区三区香蕉| 精品剧情v国产在线观看在线| 精品久久一二三区| 亚洲成人一区二区| 蜜桃免费网站一区二区三区| 99精品久久99久久久久| 欧美日韩高清一区二区三区| 欧美日本一区二区| 中文字幕在线观看不卡视频| 亚洲国产视频一区二区| 成人午夜视频福利| 欧美综合天天夜夜久久| 久久久美女毛片| 亚洲成人一区在线| 国产呦萝稀缺另类资源| 色8久久精品久久久久久蜜| 91精品国产综合久久久蜜臀图片| 亚洲免费观看高清完整| 久久er精品视频| 制服视频三区第一页精品| 国产精品乱人伦中文| 国产尤物一区二区在线| 欧美午夜理伦三级在线观看| 欧美三级在线视频| 国产精品久久久久久久浪潮网站| 亚洲福利一区二区三区| 成人av网站免费观看| 欧美丰满嫩嫩电影| 亚洲小说欧美激情另类| 东方aⅴ免费观看久久av| 日本电影欧美片| 亚洲视频免费在线观看| 另类人妖一区二区av| 欧美一区二区高清| 一片黄亚洲嫩模| 欧洲国内综合视频| 国产精品久久二区二区| 国产成人免费网站| 精品久久人人做人人爱| 裸体在线国模精品偷拍| 欧美精品精品一区|