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

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

?? serialport.cpp

?? 串口操作類
?? CPP
字號:
// SerialPort.cpp: implementation of the CSerialPort class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SerialPort.h"

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

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

CSerialPort::CSerialPort()
{
	m_hComm = INVALID_HANDLE_VALUE;
	m_dwBaudRate = CBR_9600;
}

CSerialPort::~CSerialPort()
{
	if (m_hComm != INVALID_HANDLE_VALUE)
		Close();
}

void CSerialPort::Open(UINT nPort /*=1*/)
{
	CString strPort;
	strPort.Format("COM%d", nPort);
	m_hComm = CreateFile(strPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (m_hComm == INVALID_HANDLE_VALUE)
	{
		CString strText;
		strText.Format("打不開串行口(COM%d)!\r\n請檢查!", nPort);
		MessageBox(NULL, strText, "錯誤", MB_SYSTEMMODAL | MB_ICONERROR);
		return;
	}

	// Get any early notifications.
	SetCommMask(m_hComm, EV_RXCHAR);
	// Setup device buffers.
	SetupComm(m_hComm, 1024, 1024);
	// Purge any information in the buffer.
	PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

	COMMTIMEOUTS commtimeouts;
	commtimeouts.ReadIntervalTimeout		=	0xFFFFFFFF;	// 兩字符之間最大的延時,當讀取串口數據時,一旦兩個字符傳輸的時間差超過該時間,讀取函數將返回現有的數據。設置為0表示該參數不起作用。 
	commtimeouts.ReadTotalTimeoutMultiplier	=	50;			// 讀取每字符間的超時。
	commtimeouts.ReadTotalTimeoutConstant	=	1000;		// 一次讀取串口數據的固定超時。所以在一次讀取串口的操作中,其超時為ReadTotalTimeoutMultiplier乘以讀取的字節數再加上 ReadTotalTimeoutConstant。
															//  將ReadIntervalTimeout設置為MAXDWORD,并將ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant設置為0,表示讀取操作將立即返回存放在輸入緩沖區的字符。
	// CBR_9600 is approximately 1byte/ms. For our purposes, allow
    // double the expected time per character for a fudge factor.
	commtimeouts.WriteTotalTimeoutMultiplier=	2*CBR_9600/m_dwBaudRate;
															// 寫入每字符間的超時。
	commtimeouts.WriteTotalTimeoutConstant	=	0;			// 一次寫入串口數據的固定超時。所以在一次寫入串口的操作中,其超時為WriteTotalTimeoutMultiplier乘以寫入的字節數再加上WriteTotalTimeoutConstant。
	SetCommTimeouts(m_hComm, &commtimeouts);

	DCB dcb;
	dcb.DCBlength		=	sizeof(DCB);
	GetCommState(m_hComm, &dcb);
	dcb.BaudRate		=	CBR_9600;
	dcb.ByteSize		=	8;
	dcb.Parity			=	NOPARITY;
	dcb.StopBits		=	ONESTOPBIT;

	dcb.fBinary			=	FALSE;
	dcb.fDsrSensitivity	=	FALSE;
	dcb.fOutxCtsFlow	=	FALSE;
	dcb.fOutxDsrFlow	=	FALSE;
	dcb.fOutX			=	FALSE;
	dcb.fInX			=	FALSE;
	dcb.fDtrControl		=	DTR_CONTROL_DISABLE; 
	dcb.fRtsControl		=	DTR_CONTROL_DISABLE; 
	dcb.fInX=dcb.fOutX	=	FALSE; 
	dcb.fParity			=	TRUE;
	dcb.fAbortOnError	=	TRUE;

	dcb.XonChar			=	0x11;
	dcb.XoffChar		=	0x13;
	dcb.XonLim			=	100 ;
	dcb.XoffLim			=	100 ;

	SetCommState(m_hComm, &dcb);
}

void CSerialPort::Close()
{
	if(m_hComm == INVALID_HANDLE_VALUE)
		return;

	SetCommMask(m_hComm, 0);
	// Purge any outstanding reads/writes and close device handle.
	PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
	CloseHandle(m_hComm);
	m_hComm = INVALID_HANDLE_VALUE;
}

BOOL CSerialPort::IsOpen() const
{
	return (m_hComm != INVALID_HANDLE_VALUE);
}

BOOL CSerialPort::Write(BYTE* pBuffer, DWORD dwLength)
{
	if(m_hComm == INVALID_HANDLE_VALUE)
		return FALSE;

	PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
	DWORD dwBytesWritten;
	if(!WriteFile(m_hComm, pBuffer, dwLength, &dwBytesWritten, NULL))
	{
		DWORD dwErrors;
		COMSTAT comstat;
		PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
		ClearCommError(m_hComm, &dwErrors, &comstat);
		return FALSE;
	}

	return TRUE;
}

BOOL CSerialPort::Read(BYTE* pBuffer, DWORD dwLength)
{
	if(m_hComm == INVALID_HANDLE_VALUE)
		return FALSE;

	DWORD dwBytesRead;
	DWORD dwErrors;
	COMSTAT constat;
	ClearCommError(m_hComm, &dwErrors, &constat);
	SetRTS();
	if(!ReadFile(m_hComm, pBuffer, dwLength, &dwBytesRead, NULL))
	{
		PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
		ClearCommError(m_hComm, &dwErrors, &constat);
		ClearRTS();
		return FALSE;
	}
	ClearRTS();

	return TRUE;
}

void CSerialPort::SetBaudRate(DWORD dwBaudRate)
{
	if(m_hComm == INVALID_HANDLE_VALUE)
		return;
	if(m_dwBaudRate == dwBaudRate)
		return;

	DCB dcb;
	dcb.DCBlength	=	sizeof(DCB);
	GetCommState(m_hComm, &dcb);
	dcb.BaudRate	=	dwBaudRate;
	SetCommState(m_hComm, &dcb);

	m_dwBaudRate	=	dwBaudRate;
}

void CSerialPort::SetParity(BYTE byParity)
{
	if(m_hComm == INVALID_HANDLE_VALUE)
		return;

	DCB dcb;
	dcb.DCBlength		=	sizeof(DCB);
	GetCommState(m_hComm, &dcb);
	dcb.Parity			=	byParity;
	SetCommState(m_hComm, &dcb);
}

void CSerialPort::SetRTS()
{
	EscapeCommFunction(m_hComm, SETRTS);
}

void CSerialPort::ClearRTS()
{
	EscapeCommFunction(m_hComm, CLRRTS);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区在线 | 精品久久久久香蕉网| 日韩一区二区视频| 久久精品网站免费观看| 中文字幕在线观看一区| 亚洲福利视频三区| 激情六月婷婷综合| 色综合久久久久久久久久久| 欧美日韩精品一区二区三区蜜桃 | 日本伊人精品一区二区三区观看方式| 国产一区二区三区精品视频| 91麻豆免费看| 日韩欧美色综合| 亚洲免费观看视频| 久久国产精品色婷婷| 91亚洲资源网| 精品久久久久一区| 一片黄亚洲嫩模| 国产高清精品网站| 欧美日韩一二三区| 国产精品毛片大码女人| 日韩av不卡在线观看| 99精品欧美一区二区三区综合在线| 91麻豆精品国产91久久久久久| 国产精品久久久久一区二区三区| 日韩激情中文字幕| 99久久99久久免费精品蜜臀| 91精品国产黑色紧身裤美女| 综合久久一区二区三区| 老司机午夜精品| 在线看日韩精品电影| 国产亚洲综合性久久久影院| 亚洲成人三级小说| 不卡免费追剧大全电视剧网站| 日韩视频一区二区在线观看| 亚洲激情成人在线| 国产成人亚洲精品狼色在线| 欧美高清性hdvideosex| 成人欧美一区二区三区小说 | 色综合久久中文字幕综合网| 日韩一区二区在线播放| 亚洲综合视频在线观看| 成人性生交大片免费看在线播放 | 久久99精品视频| 精品视频一区 二区 三区| 中文子幕无线码一区tr| 蜜桃久久精品一区二区| 欧美影片第一页| 中文字幕一区二区三中文字幕| 韩国三级在线一区| 欧美一区二区网站| 亚洲一区二区精品视频| 91免费看视频| 中文字幕一区二区三区色视频 | 欧美极品xxx| 麻豆精品一区二区av白丝在线| 欧美色电影在线| 亚洲精品久久久蜜桃| 97国产精品videossex| 欧美国产日韩一二三区| 国产精品88av| 久久午夜色播影院免费高清 | 国产日韩欧美综合在线| 狠狠狠色丁香婷婷综合激情| 日韩欧美在线网站| 五月婷婷另类国产| 欧美日韩一级片在线观看| 亚洲午夜精品网| 欧美日韩一区二区电影| 亚洲一区视频在线| 色综合中文字幕| 夜夜精品视频一区二区| 在线观看免费亚洲| 亚洲妇熟xx妇色黄| 7777精品伊人久久久大香线蕉最新版| 午夜精品久久久久久久久久| 欧美视频一区二| 午夜精品久久久| 91精品国产入口| 美女一区二区久久| 精品第一国产综合精品aⅴ| 蜜臀av性久久久久av蜜臀妖精| 91精品国产一区二区三区| 另类小说一区二区三区| 精品久久人人做人人爽| 国产精品亚洲视频| 国产精品理伦片| 91网站在线观看视频| 一个色在线综合| 51午夜精品国产| 久久精品国产澳门| 国产三级久久久| 91在线免费播放| 亚洲成av人影院在线观看网| 日韩欧美一级片| 国产成人精品1024| 亚洲欧美偷拍三级| 欧美日韩在线免费视频| 久久国产视频网| 国产精品污污网站在线观看| 色综合久久88色综合天天免费| 亚洲自拍偷拍麻豆| 制服.丝袜.亚洲.中文.综合| 精品一区二区免费视频| 国产精品麻豆欧美日韩ww| 欧美在线色视频| 精品在线播放午夜| 中文字幕一区二| 欧美日韩高清在线播放| 国产一区二区三区高清播放| 一色桃子久久精品亚洲| 欧美日韩一区在线| 韩国女主播成人在线| 国产精品福利电影一区二区三区四区| 在线观看91精品国产入口| 乱中年女人伦av一区二区| 国产精品区一区二区三| 欧美日韩美少妇| 国产91精品一区二区麻豆亚洲| 一区二区高清视频在线观看| 日韩精品在线看片z| a在线欧美一区| 日本成人中文字幕在线视频 | 91美女视频网站| 奇米在线7777在线精品| 中文一区在线播放| 欧美日韩国产大片| 成人免费视频网站在线观看| 亚洲国产综合色| 欧美极品美女视频| 91精品国产综合久久久久久久| 成人免费的视频| 蜜臀av一区二区| 亚洲一区二区高清| 国产欧美精品一区二区色综合| 欧美精品第一页| 成人av网在线| 狠狠色狠狠色合久久伊人| 亚洲图片有声小说| 国产精品女同一区二区三区| 欧美一级理论片| 色老汉一区二区三区| 国产精品主播直播| 琪琪久久久久日韩精品| 一区二区视频在线| 日本一区二区综合亚洲| 91麻豆精品国产自产在线| 色欧美片视频在线观看在线视频| 国产一区二区三区精品视频| 午夜免费欧美电影| 亚洲激情成人在线| 国产精品久久久久影院色老大| 日韩美女主播在线视频一区二区三区| 色综合中文字幕国产 | 精品日韩一区二区三区 | 热久久国产精品| 一区二区三区不卡视频| 国产精品伦理一区二区| 2021国产精品久久精品| 9191国产精品| 欧美人牲a欧美精品| 色综合久久久久综合体| av电影在线观看完整版一区二区| 国产资源精品在线观看| 婷婷综合另类小说色区| 一区二区三区中文免费| 国产精品毛片久久久久久久| 国产丝袜美腿一区二区三区| 精品久久久影院| 精品国产三级a在线观看| 911国产精品| 91精品在线免费观看| 欧美日韩精品电影| 欧美系列一区二区| 日本高清不卡在线观看| 99国产精品99久久久久久| 成人激情免费网站| 国产电影一区在线| 国产一区二区三区黄视频 | 欧美精品一区二区三区在线播放| 91精品国产综合久久香蕉麻豆 | 久草这里只有精品视频| 青青草国产精品97视觉盛宴| 午夜欧美一区二区三区在线播放 | 欧美一区二区三区精品| 欧美精品第1页| 91精品国产综合久久国产大片| 欧美美女喷水视频| 欧美日韩五月天| 欧美色偷偷大香| 欧美日韩国产一级二级| 欧美精品电影在线播放| 91精品久久久久久久99蜜桃| 日韩欧美一区二区在线视频| 日韩欧美中文字幕公布| 久久亚洲精品小早川怜子| 日本一区二区三区在线不卡| 国产精品久久久久7777按摩| 亚洲另类在线视频| 亚洲电影欧美电影有声小说|