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

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

?? comm.cpp

?? 一個VC++編寫的串口通信程序
?? CPP
字號:
// Comm.cpp: implementation of the CComm class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ComDbg.h"
#include "Comm.h"

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

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

BYTE	_PARITY[8]=
{
	NOPARITY,
	ODDPARITY,
	EVENPARITY,
	MARKPARITY,
	SPACEPARITY,
	NOPARITY,
	NOPARITY,
	NOPARITY,
};
BYTE	_STOPBITS[4]=
{
	ONESTOPBIT,
	ONE5STOPBITS,
	TWOSTOPBITS,
	ONESTOPBIT,
};

CComm::CComm()
{
	m_hCom		=INVALID_HANDLE_VALUE;
	m_nCom		=1;
	m_nbps		=19200;
	m_parity	=NOPARITY;
	m_bytesize	=8;
	m_stopbits	=ONESTOPBIT;
	m_hWnd		=NULL;
	m_nMask		=EV_RXCHAR;
}

CComm::~CComm()
{
	Close();
}

void CComm::SetWnd(HWND hWnd)
{
	m_hWnd=hWnd;
}
void CComm::SetCom(int nCom)
{
	ASSERT(nCom>0 && nCom<=16);
	m_nCom=nCom;
}
void CComm::SetBps(UINT bps)
{
	ASSERT( bps==110 || bps==300 || 
			bps==1200 || bps==2400 ||
			bps==4800 || bps==9600 ||
			bps==19200 || bps==38400 ||
			bps==56000 || bps==14400 ||
			bps==57600 || bps==115200 ||
			bps==128000 || bps==256000
		);
	m_nbps=bps;
}
void CComm::SetParity(BYTE parity)
{
	ASSERT(	parity == EVENPARITY ||
			parity == MARKPARITY ||
			parity == NOPARITY ||
			parity == ODDPARITY ||
			parity == SPACEPARITY);
	m_parity=parity;
}
void CComm::SetByteSize(BYTE bytesize)
{
	ASSERT(	bytesize>1 && bytesize<=16);
	m_bytesize=bytesize;
}
void CComm::SetStopBits(BYTE stopbits)
{
	ASSERT(	stopbits == ONESTOPBIT ||
			stopbits == ONE5STOPBITS ||
			stopbits == TWOSTOPBITS);
	m_stopbits=stopbits;
}
void CComm::SetMask(DWORD dwMask)
{
	m_nMask=dwMask;
}

BOOL CComm::Open()
{
	Close();
	char	szcom[8];
	sprintf(szcom,"COM%d",m_nCom);
	m_hCom = CreateFile(szcom,							// communication port string (COMX)
					     GENERIC_READ|GENERIC_WRITE,	// read/write types
					     0,								// comm devices must be opened with exclusive access
					     NULL,							// no security attributes
					     OPEN_EXISTING,					// comm devices must use OPEN_EXISTING
					     NULL,							// 同步通訊
					     NULL);							// template must be 0 for comm devices

	if (m_hCom == INVALID_HANDLE_VALUE)
	{
		TRACE("CComm->CreateFile(): Error %lu\n",GetLastError());
		return FALSE;
	}
	//======================================================
	DCB dcb;
	if(!GetCommState(m_hCom, &dcb))
	{
		TRACE("CComm->GetCommState(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	dcb.BaudRate = m_nbps;
	dcb.ByteSize = m_bytesize;
	dcb.Parity = m_parity;
	dcb.StopBits = m_stopbits;
	if(!SetCommState(m_hCom, &dcb))
	{
		TRACE("CComm->SetCommState(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	COMMTIMEOUTS	tmo={0};
	if(!GetCommTimeouts(m_hCom,&tmo))
	{
		TRACE("CComm->GetCommTimeouts(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	tmo.ReadIntervalTimeout			=100;	//每個字符的超時
	tmo.ReadTotalTimeoutConstant	=500;	//讀超時
	tmo.ReadTotalTimeoutMultiplier	=20;
	tmo.WriteTotalTimeoutConstant	=500;	//寫超時
	tmo.WriteTotalTimeoutMultiplier	=20;
	if(!SetCommTimeouts(m_hCom,&tmo))
	{
		TRACE("CComm->SetCommTimeouts(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	//======================================================
	if(!SetCommMask(m_hCom, m_nMask))
	{
		TRACE("CComm->SetCommMask(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	//======================================================
	if(!SetupComm(m_hCom,512,512))
	{
		TRACE("CComm->SetupComm(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	//======================================================
	// 刷新端口
	if(!PurgeComm(m_hCom,PURGE_RXCLEAR|PURGE_TXCLEAR|PURGE_RXABORT|PURGE_TXABORT))
	{
		TRACE("CComm->PurgeComm(): Error %lu\n",GetLastError());
		Close();
		return FALSE;
	}
	TRACE("Open COM%d completed.\n", m_nCom);
	//================================================
	return TRUE;
}
void CComm::Close()
{
	CSingleLock l(&m_crit,TRUE);
	if(m_hCom != INVALID_HANDLE_VALUE)
	{
		::CloseHandle(m_hCom);
		m_hCom=INVALID_HANDLE_VALUE;
	}
}
BOOL CComm::Send(void* pbuf,DWORD nbytes)
{
	CSingleLock l(&m_crit,TRUE);
	BOOL	ret		=FALSE;
	DWORD	nsend	=0;
	ASSERT(nbytes>=0);
	if(pbuf == NULL) return TRUE;
	if(m_hCom == INVALID_HANDLE_VALUE)	return FALSE;
	//清空緩沖區
	PurgeComm(m_hCom,PURGE_RXCLEAR|PURGE_TXCLEAR|PURGE_RXABORT|PURGE_TXABORT);
	ret=WriteFile(	m_hCom,		// Handle to COMM Port
					pbuf,		// Pointer to message buffer in calling finction
					nbytes,		// Length of message to send
					&nsend,		// Where to store the number of bytes sent
					NULL);		// Overlapped structure
	return (ret && nsend == nbytes);
}
BOOL CComm::Recv(void* pbuf,DWORD nbytes)
{
	CSingleLock l(&m_crit,TRUE);
	BOOL	ret		=FALSE;
	DWORD	nread	=0;
	ASSERT(pbuf != NULL);
	if(m_hCom == INVALID_HANDLE_VALUE)	return FALSE;
	ret=ReadFile(	m_hCom,		// Handle to COMM port 
					pbuf,		// RX Buffer Pointer
					nbytes,		// Read one byte
					&nread,		// Stores number of bytes read
					NULL);		// pointer to the m_ov structure
	return (ret && nread == nbytes);
}
BOOL CComm::IsOpened()
{
	CSingleLock l(&m_crit,TRUE);
	return (m_hCom != INVALID_HANDLE_VALUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久夜| 日日摸夜夜添夜夜添精品视频| 欧美在线综合视频| 国产最新精品精品你懂的| 一区二区三区日韩欧美精品| 久久夜色精品一区| 欧美日韩你懂的| a4yy欧美一区二区三区| 黄色资源网久久资源365| 一级精品视频在线观看宜春院| 久久蜜桃香蕉精品一区二区三区| 欧美日韩视频在线第一区| 不卡的电影网站| 国产一区在线观看麻豆| 天堂av在线一区| 一区二区三区四区视频精品免费| 久久精品欧美日韩| 欧美大片一区二区| 欧美日韩国产美| 色婷婷av一区二区三区之一色屋| 成人中文字幕电影| 国产精品99久久久久久有的能看| 视频一区二区不卡| 亚洲国产精品一区二区久久恐怖片| 国产精品美女久久久久久久| 精品国产伦一区二区三区观看体验| 欧美日韩免费视频| 色爱区综合激月婷婷| 99久久精品国产一区二区三区| 国产精品18久久久久久久网站| 毛片av一区二区三区| 天天综合色天天综合色h| 亚洲香蕉伊在人在线观| 夜夜夜精品看看| 一区二区三区在线视频播放| 亚洲欧洲三级电影| 中文字幕一区av| 亚洲日本va在线观看| ...av二区三区久久精品| 国产精品美女久久久久av爽李琼 | 日韩av一区二区三区| 亚洲成av人片一区二区三区| 亚洲综合丝袜美腿| 亚洲福利一二三区| 丝袜美腿亚洲一区二区图片| 日本不卡123| 日本va欧美va精品发布| 久久精品久久久精品美女| 麻豆国产91在线播放| 国产在线播放一区二区三区| 国产成人在线观看| 成人免费看的视频| 成人app网站| 在线欧美小视频| 6080亚洲精品一区二区| 欧美videos中文字幕| 久久青草欧美一区二区三区| 中文文精品字幕一区二区| 国产精品毛片高清在线完整版| 亚洲精品一二三区| 偷窥少妇高潮呻吟av久久免费| 免费人成黄页网站在线一区二区 | 日本久久精品电影| 欧美日本在线看| 精品福利av导航| 国产精品国产自产拍高清av| 一区二区三区日韩精品| 日韩电影网1区2区| 国产毛片精品一区| 日本韩国欧美三级| 91精品国产入口| 欧美国产日韩a欧美在线观看| 亚洲精品第1页| 奇米精品一区二区三区在线观看一| 国产一区日韩二区欧美三区| 99精品偷自拍| 欧美一激情一区二区三区| 亚洲国产精品激情在线观看| 亚洲永久精品大片| 国产精品自拍毛片| 欧美在线免费视屏| 精品国产制服丝袜高跟| 亚洲美女在线国产| 日韩成人一区二区| 成人精品视频一区二区三区| 欧美日韩国产美| 国产日产欧美一区| 亚洲午夜一二三区视频| 国产精品一区在线观看乱码| 欧美色图天堂网| 亚洲国产精品v| 婷婷久久综合九色综合绿巨人| 国产一区三区三区| 欧美日韩1区2区| 亚洲视频一区在线| 精品在线免费观看| 日本高清成人免费播放| 国产喂奶挤奶一区二区三区| 丝袜亚洲另类欧美| 91久久精品国产91性色tv| 久久先锋资源网| 日本伊人精品一区二区三区观看方式| 成人开心网精品视频| 日韩欧美国产高清| 亚洲综合精品自拍| 成人一区二区在线观看| 日韩午夜av电影| 午夜久久久久久久久久一区二区| 99免费精品视频| 国产欧美一区二区精品性| 免费高清在线视频一区·| 欧美亚州韩日在线看免费版国语版| 国产三级精品三级在线专区| 美女免费视频一区二区| 欧美男生操女生| 欧美日韩一区二区三区四区五区| 亚洲精品网站在线观看| www欧美成人18+| 丝袜美腿亚洲一区二区图片| 欧美在线免费播放| 国产精品不卡视频| 成人性生交大片免费看中文| 精品国产成人系列| 免费在线看成人av| 这里只有精品免费| 亚洲麻豆国产自偷在线| av不卡免费在线观看| 中文字幕精品一区二区精品绿巨人| 韩国女主播成人在线观看| 日韩午夜精品视频| 日韩av电影一区| 日韩无一区二区| 美女精品一区二区| 欧美一区在线视频| 蜜臀久久99精品久久久久宅男| 欧美嫩在线观看| 日本欧美久久久久免费播放网| 欧美精品第一页| 免费av成人在线| 精品国产91洋老外米糕| 日本欧美久久久久免费播放网| 日韩一区二区三区在线| 美女视频一区二区三区| 日韩精品在线网站| 国产在线精品视频| 久久久久国产免费免费| 国产高清亚洲一区| 国产精品亲子乱子伦xxxx裸| jiyouzz国产精品久久| 亚洲手机成人高清视频| 色婷婷综合久久久久中文一区二区 | 一区二区三区在线观看视频| 在线看不卡av| 日韩精品一二三区| 精品国产91洋老外米糕| 欧美二区三区的天堂| 日韩二区在线观看| 久久久久久久久久久久久夜| 国产成+人+日韩+欧美+亚洲| 国产精品久久二区二区| 色香蕉成人二区免费| 丝袜美腿一区二区三区| 精品不卡在线视频| 成人精品视频一区二区三区| 亚洲在线成人精品| 欧美大片国产精品| caoporen国产精品视频| 亚洲福利国产精品| 久久久蜜桃精品| 色偷偷88欧美精品久久久| 青草国产精品久久久久久| 久久久国产精品不卡| 91国产视频在线观看| 日本色综合中文字幕| 欧美极品少妇xxxxⅹ高跟鞋| 欧美在线你懂的| 国产老女人精品毛片久久| 亚洲综合成人网| 欧美第一区第二区| 一本到不卡精品视频在线观看| 蜜臀av一区二区在线免费观看 | 欧美日本一道本在线视频| 看电影不卡的网站| 国产精品情趣视频| 日韩一卡二卡三卡四卡| 99久久精品国产毛片| 美腿丝袜亚洲三区| 一区精品在线播放| 欧美成人精品福利| 在线观看国产日韩| 成人亚洲一区二区一| 五月天激情综合网| 中文字幕日韩一区二区| 日韩精品一区二区三区三区免费| 91在线观看下载| 寂寞少妇一区二区三区| 一区二区国产盗摄色噜噜| 国产午夜精品理论片a级大结局 | 日韩欧美资源站| 色88888久久久久久影院按摩|