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

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

?? commserialdlg.cpp

?? 串口通信實驗代碼,使用VC++開發
?? CPP
字號:
// CommSerialDlg.cpp : implementation file
//

#include "stdafx.h"
#include "CommSerial.h"
#include "CommSerialDlg.h"
#include "afxmt.h"
#include ".\commserialdlg.h"

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

#define BUFFER_SIZE	2048

HANDLE	m_hCommPort;		//保存打開的串行口設備句柄

UINT ReadChar(PVOID hWnd);	//讀取字符線程

char RecvBuf[BUFFER_SIZE], SendBuf[BUFFER_SIZE];
UINT RecvPTR;

CEvent	SendEvent(0,true,0,0),RecvEvent(0,true,0,0);
OVERLAPPED	SendOV,RecvOV;


/////////////////////////////////////////////////////////////////////////////
// CCommSerialDlg dialog

CCommSerialDlg::CCommSerialDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CCommSerialDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCommSerialDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCommSerialDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCommSerialDlg)
	DDX_Control(pDX, IDOK, m_OK);
	DDX_Control(pDX, IDC_SEND, m_Send);
	DDX_Control(pDX, IDC_RECV, m_Receive);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCommSerialDlg, CDialog)
	//{{AFX_MSG_MAP(CCommSerialDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCommSerialDlg message handlers

BOOL CCommSerialDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	RecvPTR=0;

	DCB	CommDCB;	//串行口的設備控制塊

	m_hCommPort=CreateFile ("COM1",		//打開串行口
		GENERIC_READ|GENERIC_WRITE,
		0,
		NULL,
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,
		NULL);
	if(m_hCommPort==INVALID_HANDLE_VALUE)
		{
			AfxMessageBox("系統無法打開此串口設備(CreateFile)!");
			PostMessage(WM_QUIT,0,0);
			return false;
		}
	
	if(!GetCommState(m_hCommPort,&CommDCB)) //得到原來的串口參數
	{
		AfxMessageBox("無法得到設置串口狀態(GetCommState)!");
		PostMessage(WM_QUIT,0,0);
		return false;
	}
  
	CommDCB.BaudRate =CBR_9600;	//設置新的串口參數
	CommDCB.ByteSize =8; 
	CommDCB.Parity = NOPARITY; 
    CommDCB.StopBits = ONESTOPBIT ;
	CommDCB.fBinary = TRUE ;
	CommDCB.fParity = FALSE; 

   	if(!SetCommState(m_hCommPort, &CommDCB))
	{
		AfxMessageBox("無法設置串口狀態(SetCommState)!");
		PostMessage(WM_QUIT,0,0);
		return false;
	} 

	if (!SetupComm(m_hCommPort,BUFFER_SIZE,BUFFER_SIZE))		//設置緩沖區
	{
		AfxMessageBox("串口緩沖區設置錯誤(SetupComm)!");
		PostMessage(WM_QUIT,0,0);
		return false;
	}
	if (!PurgeComm(m_hCommPort, PURGE_RXCLEAR|PURGE_TXCLEAR|PURGE_RXABORT|PURGE_TXABORT)) //清除所有接收和發送緩沖區中的數據
	{
		AfxMessageBox("清空串口錯誤(PurgeComm)!");
		PostMessage(WM_QUIT,0,0);
		return false;
	}

	memset(&SendOV,0,sizeof(SendOV));		//發送
	SendOV.hEvent=SendEvent;
	memset(&RecvOV,0,sizeof(RecvOV));		//發送
	RecvOV.hEvent=RecvEvent;

	
	AfxBeginThread(ReadChar,NULL,THREAD_PRIORITY_NORMAL);
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CCommSerialDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CCommSerialDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

UINT ReadChar(PVOID hWnd)
{
	CString		ShowStr;
	ULONG		ReadLen;

	while (true)		//只要線程運行,就監視端口是否收到數據
	{
		ReadFile(m_hCommPort,&RecvBuf[RecvPTR],1,&ReadLen,&RecvOV); //讀字符
		GetOverlappedResult(m_hCommPort,&RecvOV,&ReadLen,TRUE);		//等待讀狀態完成
		if (ReadLen>0)
		{
			if (RecvBuf[RecvPTR]!=NULL)	//不是一行的最后一個字符
				RecvPTR++;
			else
			{
				ShowStr="RECV:";
				ShowStr=ShowStr+RecvBuf;
				CCommSerialApp* pApp=(CCommSerialApp*)AfxGetApp();
				CCommSerialDlg* pDlg=(CCommSerialDlg*)pApp->m_pMainWnd;
				pDlg->m_Receive.InsertString (0,ShowStr);

				RecvPTR=0;
			}
		}
		RecvEvent.ResetEvent();		//復位事件變量
	}

	return 0;
}

void CCommSerialDlg::OnOK() 
{
	// TODO: Add extra validation here
	ULONG SendLen,SentLen;
    CString ShowStr="SEND:";
	
	//獲取要發送的字符串
	SendLen=m_Send.GetWindowText(SendBuf,BUFFER_SIZE-1);
    if (SendLen==0)
	{
		AfxMessageBox("請輸入要傳輸的數據");
		return;
	}
	SendBuf[SendLen++]=NULL;
	
	m_Send.EnableWindow(FALSE);		
	m_OK.EnableWindow (FALSE);

	WriteFile(m_hCommPort,SendBuf,SendLen,&SentLen,&SendOV);
	GetOverlappedResult(m_hCommPort,&SendOV,&SentLen,TRUE);		//等待發送完成
	SendEvent.ResetEvent();

	m_Send.EnableWindow(TRUE);
	m_OK.EnableWindow (TRUE);
	
	ShowStr=ShowStr+SendBuf;		//顯示發送的消息
	m_Receive.InsertString (0,(LPCTSTR)ShowStr);
    m_Send.SetWindowText(NULL);
	m_Send.SetFocus();

	//CDialog::OnOK();
}

void CCommSerialDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	CDialog::OnCancel();
}

BOOL CCommSerialDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	CloseHandle(m_hCommPort); //關閉串行口

	return CDialog::DestroyWindow();
}

















void CCommSerialDlg::OnBnClickedSend()
{
	// TODO: 在此添加控件通知處理程序代碼
}

void CCommSerialDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知處理程序代碼
	OnOK();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久草在线在线精品观看| 欧美午夜理伦三级在线观看| 北条麻妃一区二区三区| 欧美在线制服丝袜| 日本一区二区久久| 水蜜桃久久夜色精品一区的特点| 国产精品影视天天线| 欧美日韩亚洲国产综合| 中文字幕精品三区| 美美哒免费高清在线观看视频一区二区 | 大胆亚洲人体视频| 欧美日韩在线播放| **网站欧美大片在线观看| 久久99热这里只有精品| 欧美色电影在线| 中文字幕视频一区二区三区久| 美腿丝袜亚洲色图| 欧美日本韩国一区二区三区视频| 国产精品高潮呻吟| 极品销魂美女一区二区三区| 欧美日韩三级一区| 一区二区在线看| 99在线精品观看| 国产欧美一区二区三区沐欲| 极品美女销魂一区二区三区免费| 欧美三级乱人伦电影| 亚洲区小说区图片区qvod| 国产成人日日夜夜| 337p日本欧洲亚洲大胆色噜噜| 日韩激情视频在线观看| 欧美三级午夜理伦三级中视频| 亚洲人妖av一区二区| 成人国产亚洲欧美成人综合网| 欧美xxxxx牲另类人与| 日韩国产一区二| 911精品产国品一二三产区| 亚洲午夜久久久久| 欧美色精品在线视频| 亚洲成人免费观看| 欧美精品久久一区| 三级不卡在线观看| 日韩一卡二卡三卡| 精品一区二区影视| 久久亚洲免费视频| 懂色av中文一区二区三区| 久久精品视频网| 成人激情图片网| 亚洲欧美一区二区三区孕妇| 91老师片黄在线观看| 亚洲精品一卡二卡| 精品视频一区三区九区| 日本aⅴ免费视频一区二区三区| 在线成人免费观看| 玖玖九九国产精品| 国产亚洲污的网站| 91美女片黄在线| 午夜激情综合网| 日韩欧美国产三级| 国产剧情在线观看一区二区| 国产精品久久久久一区二区三区 | av一区二区久久| 亚洲综合无码一区二区| 欧美一区二区三区在线电影| 久久99久久久久| 国产精品久久久久久久久免费相片| 一本久久精品一区二区| 日韩精品亚洲一区二区三区免费| 精品国产乱子伦一区| 国产精品1区二区.| 一区二区三区高清在线| 欧美一级精品在线| 成人黄页毛片网站| 日韩中文字幕1| 亚洲国产精品av| 69堂精品视频| 成人国产一区二区三区精品| 石原莉奈在线亚洲二区| 国产午夜精品久久久久久久| 欧美性猛交xxxx乱大交退制版 | 久久精品日韩一区二区三区| 91在线观看高清| 精品一区二区精品| 亚洲综合在线电影| 久久久久国产免费免费 | 国产suv精品一区二区6| 亚洲在线视频免费观看| 久久精品视频在线免费观看| 欧美精品久久一区| 91网站黄www| 国产精品小仙女| 日产国产欧美视频一区精品| 亚洲精品乱码久久久久| 国产偷国产偷精品高清尤物 | 亚洲精品免费视频| 中文字幕av资源一区| 日韩欧美的一区| 欧美日韩精品一区二区在线播放 | 国产亚洲成aⅴ人片在线观看| 欧美日韩免费不卡视频一区二区三区| 国产一区二区三区观看| 日韩av一级电影| 亚洲超碰精品一区二区| 亚洲啪啪综合av一区二区三区| 国产亚洲精品bt天堂精选| 欧美电影免费观看高清完整版| 欧美亚洲高清一区| 一本色道综合亚洲| 成人深夜福利app| 国产盗摄精品一区二区三区在线| 老司机精品视频导航| 麻豆成人综合网| av亚洲精华国产精华| 国产尤物一区二区在线| 久久成人免费网| 久久电影国产免费久久电影| 青青国产91久久久久久| 日韩精品一区第一页| 亚洲午夜精品网| 午夜精品久久久久久久久久| 亚洲一区在线观看网站| 亚洲精品亚洲人成人网在线播放| 亚洲视频免费在线观看| 中文字幕综合网| 一区二区三区四区乱视频| 亚洲伦理在线精品| 亚洲午夜电影在线观看| 亚洲成人精品一区二区| 亚洲电影在线免费观看| 亚洲成人精品一区二区| 日韩电影在线一区二区三区| 欧美a一区二区| 韩国理伦片一区二区三区在线播放| 美女网站色91| 国产成人aaa| 91丨九色丨尤物| 精品污污网站免费看| 日韩一二三四区| 国产日韩欧美高清| 亚洲色图另类专区| 亚洲午夜精品在线| 久久精品99国产国产精| 国产精品538一区二区在线| 成人福利视频在线| 欧美亚洲国产怡红院影院| 日韩视频在线观看一区二区| 国产欧美一区二区精品秋霞影院 | 全国精品久久少妇| 国产乱码精品一区二区三区忘忧草 | 日韩精品成人一区二区三区| 精品一区二区三区免费| 99久久夜色精品国产网站| 欧美精品日日鲁夜夜添| 久久久久久久网| 亚洲午夜精品一区二区三区他趣| 久久精品国产亚洲高清剧情介绍| 成人aa视频在线观看| 欧美美女一区二区三区| 国产色一区二区| 日日嗨av一区二区三区四区| 国产高清不卡二三区| 欧美日韩精品综合在线| 国产日韩精品一区二区三区在线| 一区二区三区四区蜜桃| 国产乱子伦视频一区二区三区 | 欧美精三区欧美精三区| 久久精品夜色噜噜亚洲aⅴ| 亚洲成人精品在线观看| 成人午夜伦理影院| 日韩视频一区在线观看| 亚洲精品精品亚洲| 国产露脸91国语对白| 欧美人妇做爰xxxⅹ性高电影| 国产亚洲一区二区在线观看| 午夜国产精品一区| 91在线播放网址| 久久免费看少妇高潮| 午夜激情久久久| 一本久久精品一区二区| 国产视频一区在线播放| 欧美aⅴ一区二区三区视频| 色94色欧美sute亚洲13| 国产三级一区二区| 毛片一区二区三区| 欧美日韩性生活| 亚洲免费三区一区二区| 国产一区二区伦理| 日韩欧美电影一二三| 午夜精品视频在线观看| 欧美在线高清视频| 亚洲天堂2016| 成人h动漫精品一区二| 久久精品免费在线观看| 精品一区二区在线看| 日韩欧美区一区二| 青娱乐精品视频在线| 欧美一区二区三区在线电影| 亚洲成a天堂v人片| 欧美老肥妇做.爰bbww视频| 一个色妞综合视频在线观看| 色悠悠亚洲一区二区|