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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serialcomm.cpp

?? 使用WINDOWS API接口
?? CPP
字號:
// SerialComm.cpp : Defines the initialization routines for the DLL.
//

#include "stdafx.h"
#include "SerialComm.h"

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

#define EV_EXIT   0X0000

//
//	Note!
//
//		If this DLL is dynamically linked against the MFC
//		DLLs, any functions exported from this DLL which
//		call into MFC must have the AFX_MANAGE_STATE macro
//		added at the very beginning of the function.
//
//		For example:
//
//		extern "C" BOOL PASCAL EXPORT ExportedFunction()
//		{
//			AFX_MANAGE_STATE(AfxGetStaticModuleState());
//			// normal function body here
//		}
//
//		It is very important that this macro appear in each
//		function, prior to any calls into MFC.  This means that
//		it must appear as the first statement within the 
//		function, even before any object variable declarations
//		as their constructors may generate calls into the MFC
//		DLL.
//
//		Please see MFC Technical Notes 33 and 58 for additional
//		details.
//

/////////////////////////////////////////////////////////////////////////////
// CSerialCommApp

BEGIN_MESSAGE_MAP(CSerialCommApp, CWinApp)
	//{{AFX_MSG_MAP(CSerialCommApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSerialCommApp construction

CSerialCommApp::CSerialCommApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/////////////////////////////////////////////////////////////////////////////
// The one and only CSerialCommApp object

CSerialCommApp theApp;

struct  THREADPAR
{
	HANDLE       idComDev;
	CWinThread   *pMainWnd;
}ThreadParameter;

HANDLE _declspec(dllexport) OpenComm( char ComStr[], UINT cbInQueue, UINT cbOutQueue )
{
    HANDLE   hCommDev;
	DCB      dcb;
	char     ComPath[8]="\\\\.\\";
	char     TempCom[8]="COM1";
	char     COMM[12]="COM1";
	char     TemStr[8]="";
	char     *p1,*p2;
    BYTE     DCB_Parity,DCB_Stop;
	char     ErrorMessage[32]="";

	p1=ComStr;
	p2=strstr(ComStr,":");
	strncpy(TempCom,ComStr,p2-p1);
	TempCom[p2-p1]='\0';
   	strupr(TempCom);
	sprintf(COMM,"%s%s",ComPath,TempCom);
	hCommDev=CreateFile( COMM, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );
	if(hCommDev==(HANDLE)-1)
	{
 	    sprintf( ErrorMessage, "創(chuàng)建%s失敗!", COMM );
		AfxMessageBox(ErrorMessage);
		return (HANDLE)-1;
	}

	dcb.DCBlength = sizeof( DCB );
	GetCommState( hCommDev, &dcb );

	p1=p2+1;
	p2=strstr(p1,",");
	strncpy(TemStr,p1,p2-p1);
	TemStr[p2-p1]='\0';
	dcb.BaudRate = atoi(TemStr);

	p1=p2+1;
	p2=strstr(p1,",");
	switch(*p1)
	{
	case 'N':
	case 'n':
		DCB_Parity=0;
		break;
	case 'O':
	case 'o':
		DCB_Parity=1;
		break;
	case 'E':
	case 'e':
		DCB_Parity=2;
		break;
	case 'M':
	case 'm':
		DCB_Parity=3;
		break;
	case 'S':
	case 's':
		DCB_Parity=4;
		break;
	default:
		DCB_Parity=0;
	}
 	dcb.Parity = DCB_Parity;

	p1=p2+1;
	p2=strstr(p1,",");
	strncpy(TemStr,p1,p2-p1);
	TemStr[p2-p1]='\0';
	dcb.ByteSize = atoi(TemStr);

	p1=p2+1;
	switch(*p1)
	{
	case 1:
		DCB_Stop=0;
		break;
	case 2:
		DCB_Stop=2;
		break;
	default:
		DCB_Stop=0;
	}
	dcb.StopBits = DCB_Stop;

    SetCommState( hCommDev, &dcb );
	SetupComm( hCommDev, cbInQueue, cbOutQueue );

	COMMTIMEOUTS CommTimeOuts;
	CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
	CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
	CommTimeOuts.ReadTotalTimeoutConstant = 0;
	CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
	CommTimeOuts.WriteTotalTimeoutConstant = 5000;
	SetCommTimeouts( hCommDev, &CommTimeOuts );

	PurgeComm(hCommDev,PURGE_TXCLEAR); //清發(fā)送緩沖區(qū)
	PurgeComm(hCommDev,PURGE_RXCLEAR); //清接收緩沖區(qū)

	return hCommDev;
}

void _declspec(dllexport) CloseComm(HANDLE IdCommDev)
{
    CloseHandle(IdCommDev);
}

int _declspec(dllexport) WriteComm(HANDLE idComDev,void FAR* lpvBuf,DWORD cbWrite)
{
	BOOL bWriteStat;
    OVERLAPPED  write_os;

	memset(&write_os,0,sizeof(OVERLAPPED));
	write_os.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
	bWriteStat = WriteFile( idComDev, (LPSTR)lpvBuf, cbWrite, &cbWrite, &write_os );
	if( !bWriteStat )
	{
		if( WaitForSingleObject( write_os.hEvent, INFINITE ) ) 
		{
			cbWrite = 0;
		}
		else
		{
			GetOverlappedResult( idComDev, &write_os, &cbWrite, FALSE );
			write_os.Offset += cbWrite;
		}
	}
	CloseHandle(write_os.hEvent);

	return cbWrite;
}

int _declspec(dllexport) WriteCommByte( HANDLE idComDev, char ucByte )
{
	BOOL bWriteStat;
	DWORD dwBytesWritten;
    OVERLAPPED  write_os;

	memset(&write_os,0,sizeof(OVERLAPPED));
	write_os.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
	bWriteStat = WriteFile( idComDev, (LPSTR) &ucByte, 1, &dwBytesWritten, &write_os );
	if( !bWriteStat )
	{
		if( WaitForSingleObject( write_os.hEvent, INFINITE ) ) 
		{
			dwBytesWritten = 0;
		}
		else
		{
			GetOverlappedResult( idComDev, &write_os, &dwBytesWritten, FALSE );
			write_os.Offset += dwBytesWritten;
		}
	}
	CloseHandle(write_os.hEvent);

	return( TRUE );
}

int _declspec(dllexport) ReadComm(HANDLE idComDev, void FAR* lpvBuf, DWORD cbRead)
{
	DWORD      dwErrorFlag;
	COMSTAT    comStat;
	OVERLAPPED  read_os;

	memset(&read_os,0,sizeof(OVERLAPPED));
	read_os.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
	ClearCommError(idComDev,&dwErrorFlag,&comStat);
	cbRead=comStat.cbInQue;
	if(cbRead>0)
	{
		BOOL bReturn=ReadFile(idComDev,lpvBuf,cbRead,&cbRead,&read_os);
		if(!bReturn)//錯誤
		{
			if( GetLastError() == ERROR_IO_PENDING )
			{
				WaitForSingleObject( read_os.hEvent, INFINITE );
				return( (int) cbRead );
			}
			return( 0 );
		}
	}
	CloseHandle(read_os.hEvent);

	return cbRead;
}

void _declspec(dllexport) SendDTR(HANDLE idComDev)
{
    EscapeCommFunction(idComDev,SETDTR);     
}

void _declspec(dllexport) ClearDTR(HANDLE idComDev)
{
    EscapeCommFunction(idComDev,CLRDTR);     
}

void _declspec(dllexport) SendRTS(HANDLE idComDev)
{
    EscapeCommFunction(idComDev,SETRTS);     
}

void _declspec(dllexport) ClearRTS(HANDLE idComDev)
{
    EscapeCommFunction(idComDev,CLRRTS);     
}

void _declspec(dllexport) SendBreak(HANDLE idComDev)
{
    EscapeCommFunction(idComDev,SETBREAK);
	//SetCommBreak(idComDev);
}

void _declspec(dllexport) ClearBreak(HANDLE idComDev)
{
    EscapeCommFunction(idComDev,CLRBREAK);
	//ClearCommBreak(idComDev);
}

int CommWatch( THREADPAR *pParameter )
{
	DWORD       dwEvtMask;
	HANDLE      idComDev;
	CWinThread  *pMainWnd;

    idComDev=pParameter->idComDev;
	pMainWnd=pParameter->pMainWnd;

	if( !SetCommMask(idComDev,EV_RXCHAR|EV_DSR|EV_CTS|EV_BREAK))
		return FALSE;
	while(TRUE)
	{
		dwEvtMask=0;
		WaitCommEvent(idComDev,&dwEvtMask,NULL);
		if((dwEvtMask&EV_RXCHAR)==EV_RXCHAR)
		{
			pMainWnd->PostThreadMessage(WM_COMMRECVNOTIFY,(WPARAM)idComDev,NULL);
		}
		else if((dwEvtMask&EV_DSR)==EV_DSR)
		{
			pMainWnd->PostThreadMessage(WM_COMMDTRNOTIFY,(WPARAM)idComDev,NULL);
		}
		else if((dwEvtMask&EV_CTS)==EV_CTS)
		{
			pMainWnd->PostThreadMessage(WM_COMMRTSNOTIFY,(WPARAM)idComDev,NULL);
		}
		else if((dwEvtMask&EV_BREAK)==EV_BREAK)
		{
			pMainWnd->PostThreadMessage(WM_COMMBREAKNOTIFY,(WPARAM)idComDev,NULL);
		}
		else
		{
			//Exit Thread
			GetCommMask(idComDev,&dwEvtMask);
			if(dwEvtMask==EV_EXIT)
			{
#ifdef  DLLDEBUG
				AfxMessageBox("COM監(jiān)控線程退出!");
#endif
				break;
			}
			//end
		}
	}

    return TRUE;
}

HANDLE _declspec(dllexport) CreateWatchComm(HANDLE idComDev,CWinThread *pMainWnd)
{
    DWORD             dwThreadID;
	HANDLE            hTherad;

	ThreadParameter.idComDev=idComDev;
	ThreadParameter.pMainWnd=pMainWnd;

	hTherad=CreateThread(
		(LPSECURITY_ATTRIBUTES)NULL,
		0,
		(LPTHREAD_START_ROUTINE)CommWatch,
		&ThreadParameter,
		0,
		&dwThreadID);
    return hTherad;
}

int _declspec(dllexport) DeleteWatchComm(HANDLE idComDev)
{
    SetCommMask(idComDev,EV_EXIT);
	return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品v| 91香蕉视频污在线| 爽爽淫人综合网网站| 亚洲少妇屁股交4| 国产精品成人在线观看| 国产午夜精品在线观看| 欧美xxxxxxxxx| 日韩欧美久久久| 久久午夜电影网| 久久精品夜色噜噜亚洲aⅴ| 精品处破学生在线二十三| 日韩欧美国产不卡| 日韩欧美资源站| 亚洲精品在线三区| 亚洲国产精品二十页| 国产精品国产三级国产有无不卡| 国产精品亲子乱子伦xxxx裸| 亚洲欧美日韩国产综合在线| 亚洲美女一区二区三区| 亚洲成av人影院| 日韩av在线免费观看不卡| 蜜桃精品视频在线观看| 国模一区二区三区白浆| 成人午夜精品在线| 色又黄又爽网站www久久| 欧美日韩国产综合一区二区三区 | 国产三区在线成人av| 久久久噜噜噜久久中文字幕色伊伊| 久久亚洲综合av| 国产欧美一区二区精品秋霞影院| 中文字幕一区二区三| 一级女性全黄久久生活片免费| 亚洲成a人片在线不卡一二三区 | 中文字幕亚洲区| 中文字幕在线观看不卡| 午夜精品久久久久久久99樱桃| 开心九九激情九九欧美日韩精美视频电影| 美国三级日本三级久久99| 国产iv一区二区三区| 91香蕉视频污在线| 欧美精品一区二区三区久久久| 中文字幕一区二区三区不卡| 日韩不卡一区二区三区| 懂色av一区二区三区蜜臀 | 欧美一区二区成人6969| 国产清纯白嫩初高生在线观看91 | 欧美高清视频不卡网| 日本一区二区三区久久久久久久久不| 亚洲国产综合色| 国产精品亚洲一区二区三区妖精| 欧美日韩久久一区| 中文字幕在线一区二区三区| 老司机精品视频导航| 色屁屁一区二区| 国产精品人人做人人爽人人添 | 精品日韩欧美在线| 亚洲一区欧美一区| 成人免费视频视频| 欧美精品一区二区在线观看| 首页国产欧美久久| 9i在线看片成人免费| 久久久美女毛片| 美女精品自拍一二三四| 91精品在线一区二区| 亚洲一区二区三区视频在线播放| 成人免费av网站| 久久久综合视频| 黄页视频在线91| 欧美va亚洲va香蕉在线| 免费看欧美美女黄的网站| 欧美视频一区二区三区四区| 亚洲激情自拍视频| 在线亚洲高清视频| 亚洲人成人一区二区在线观看| 波多野结衣在线aⅴ中文字幕不卡| 久久综合久色欧美综合狠狠| 久久国产欧美日韩精品| 欧美成人vr18sexvr| 日本成人中文字幕| 日韩一区二区电影网| 日本女优在线视频一区二区| 在线综合视频播放| 免费在线观看视频一区| 欧美tk—视频vk| 国产又粗又猛又爽又黄91精品| 欧美大片免费久久精品三p| 蜜桃av一区二区| 欧美精品一区在线观看| 成人av动漫在线| 亚洲精品中文在线观看| 欧美美女喷水视频| 免费人成黄页网站在线一区二区 | 国产精品美日韩| 成人深夜视频在线观看| 亚洲视频一区二区在线| 欧美在线观看一区| 视频一区视频二区中文| 日韩免费视频线观看| 爽好久久久欧美精品| 欧美三级韩国三级日本三斤| 天天综合天天做天天综合| 欧美v国产在线一区二区三区| 国产成人综合在线| 亚洲乱码国产乱码精品精的特点 | 国产欧美一区二区三区网站| 成人午夜看片网址| 亚洲成a人v欧美综合天堂下载 | 91麻豆精品国产91久久久更新时间| 亚洲成人动漫精品| 欧美videos中文字幕| 成人av网站大全| 日韩精彩视频在线观看| 国产日本欧美一区二区| 欧美丰满嫩嫩电影| 国产福利91精品一区二区三区| 亚洲欧美精品午睡沙发| 日韩一级二级三级精品视频| 成人午夜伦理影院| 亚州成人在线电影| 国产精品欧美一区二区三区| 91精品国产综合久久久蜜臀粉嫩 | 精品国产一区二区三区四区四 | 国产在线不卡视频| 亚洲精品国产精品乱码不99 | 亚洲成人自拍偷拍| 国产欧美日韩卡一| 欧美精品123区| 91国产丝袜在线播放| 韩日欧美一区二区三区| 亚洲成av人片| 亚洲色图欧美偷拍| 亚洲国产精品激情在线观看| 日韩一级二级三级| 欧美日本一区二区三区| 色噜噜夜夜夜综合网| 国产一区久久久| 日本va欧美va精品发布| 亚洲国产日韩a在线播放| 欧美精品一区二区久久久| 欧美日韩国产综合久久| 色偷偷一区二区三区| 国产一区二区主播在线| 亚洲线精品一区二区三区八戒| 国产精品麻豆99久久久久久| 久久免费精品国产久精品久久久久| 91亚洲精品一区二区乱码| 成人免费视频网站在线观看| 久久精品国产77777蜜臀| 午夜欧美大尺度福利影院在线看| 亚洲人成伊人成综合网小说| 国产色产综合色产在线视频| 精品久久久久久久久久久久久久久 | 国产精品久久久久久亚洲毛片| 精品捆绑美女sm三区| 欧美成人午夜电影| 精品久久人人做人人爱| 日韩一区二区三区观看| 日韩午夜三级在线| 精品国产伦一区二区三区观看体验| 3d动漫精品啪啪一区二区竹菊| 欧美二区乱c少妇| 日韩免费福利电影在线观看| 日韩久久精品一区| 久久一区二区三区四区| 久久噜噜亚洲综合| 国产精品久久久久久亚洲伦| 亚洲精品高清在线观看| 婷婷一区二区三区| 奇米影视7777精品一区二区| 久草热8精品视频在线观看| 国产jizzjizz一区二区| 波多野结衣中文字幕一区二区三区 | 亚洲欧洲综合另类| 亚洲国产精品精华液网站| 午夜日韩在线电影| 捆绑变态av一区二区三区| 成人免费视频caoporn| 欧洲在线/亚洲| 日韩免费看的电影| 国产精品素人视频| 亚洲成人在线网站| 国产一区二区精品久久91| 成人动漫一区二区在线| 欧美视频一区二| 久久久久综合网| 亚洲一区二区三区中文字幕| 免费成人在线观看| 91在线视频播放| 日韩视频一区二区| 亚洲男同性视频| 黄色日韩网站视频| 不卡视频在线看| 日韩一区二区三区精品视频| 综合色中文字幕| 久久精品国产亚洲高清剧情介绍 | 欧美色男人天堂| 精品国产人成亚洲区| 亚洲美女在线国产| 国产一区二区三区免费播放| 欧美亚洲高清一区|