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

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

?? serialdlg.cpp

?? Wince 串口例程 Wince 串口例程 Wince 串口例程
?? CPP
字號:
// SerialDlg.cpp : 實現(xiàn)文件
//

#include "stdafx.h"
#include "Serial.h"
#include "SerialDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CSerialDlg 對話框

CSerialDlg::CSerialDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSerialDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CSerialDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX,IDC_CLOSE_BUTTON ,ButClose);
	DDX_Control(pDX,IDC_OPEN_BUTTON ,ButOpen);
    DDX_Control(pDX,IDC_SEND_BUTTON ,ButSend);
	DDX_Text(pDX,IDC_SEND ,strSendEdit);
}

BEGIN_MESSAGE_MAP(CSerialDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
	ON_WM_SIZE()
#endif
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_OPEN_BUTTON, OnOpenCom)
	ON_BN_CLICKED(IDC_CLOSE_BUTTON, OnCloseCom)
	ON_BN_CLICKED(IDC_SEND_BUTTON, OnSend)
	ON_WM_DESTROY()
END_MESSAGE_MAP()


// CSerialDlg 消息處理程序

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

	// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
	//  執(zhí)行此操作
	SetIcon(m_hIcon, TRUE);			// 設置大圖標
	SetIcon(m_hIcon, FALSE);		// 設置小圖標

	// TODO: 在此添加額外的初始化代碼
	strRecDisp=_T("");
	CenterWindow(GetDesktopWindow());
	hComm = INVALID_HANDLE_VALUE;		/* 串口操作句柄無效 */
	ExitThreadEvent=NULL;               /* 關閉線程事件句柄無效*/
	ButClose.EnableWindow(FALSE);       /* "關閉串口"按鍵無效 */
	UpdateData(FALSE);                   /*把變量的值傳給控件*/
	
	return TRUE;  // 除非將焦點設置到控件,否則返回 TRUE
}

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CSerialDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
	DRA::RelayoutDialog(
		AfxGetInstanceHandle(), 
		this->m_hWnd, 
		DRA::GetDisplayMode() != DRA::Portrait ? 
			MAKEINTRESOURCE(IDD_SERIAL_DIALOG_WIDE) : 
			MAKEINTRESOURCE(IDD_SERIAL_DIALOG));
}
#endif
BOOL CSerialDlg::OpenPort(LPCTSTR Port, int BaudRate, int DataBits, int StopBits, int Parity)
{
	COMMTIMEOUTS CommTimeOuts;  //創(chuàng)建超時變量參數
    DWORD error;                //獲得錯誤代碼
	hComm = CreateFile(Port, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
	if(hComm == INVALID_HANDLE_VALUE)
	{
		error=GetLastError();
		MessageBox(_T("無法打開端口或端口已打開!請檢查是否已被占用."));
		return FALSE;
	}
	GetCommState(hComm, &dcb);						/* 讀取串口的DCB */
	dcb.BaudRate= BaudRate;			                /*設置波特率*/
	dcb.ByteSize = DataBits;                        /*設置數據位*/
	dcb.Parity= Parity;                             /*設置校驗位*/
	dcb.StopBits= StopBits;	                        /*設置停止位*/
	dcb.fParity= FALSE;								/* 禁止奇偶校驗 */
	dcb.fBinary= TRUE;
	dcb.fOutX= 0;
	dcb.fInX= 0;
	//設置狀態(tài)參數
	SetCommMask(hComm, EV_RXCHAR);					/* 串口事件:接收到一個字符 */	
	SetupComm(hComm, 16384, 16384);					/* 設置接收與發(fā)送的緩沖區(qū)大小 */
    SetCommState(hComm, &dcb);
	BOOL isSucces=SetCommState(hComm, &dcb);/* 設置串口的DCB */
	if(!isSucces)					
	{  
		error=GetLastError();
		MessageBox(_T("無法按當前參數配置端口,請檢查參數!"));
		ClosePort();
		return FALSE;
	}
	
	GetCommTimeouts(hComm, &CommTimeOuts);              /*獲得超時參數*/  
	//設置超時參數
	CommTimeOuts.ReadIntervalTimeout = 100;				/* 接收字符間最大時間間隔 */
	CommTimeOuts.ReadTotalTimeoutMultiplier = 1;		
	CommTimeOuts.ReadTotalTimeoutConstant = 100;		/* 讀數據總超時常量 */
	CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
	CommTimeOuts.WriteTotalTimeoutConstant = 0;		
	if(!SetCommTimeouts(hComm, &CommTimeOuts))
	{
		MessageBox(_T("無法設置超時參數!"));
		ClosePort();
		return FALSE;
	}
	PurgeComm(hComm, PURGE_TXCLEAR | PURGE_RXCLEAR);	 /* 清除收/發(fā)緩沖區(qū) */
	return TRUE;		
}
BOOL CSerialDlg::ClosePort(void)
{
	if(hComm != INVALID_HANDLE_VALUE)
	{
		SetCommMask(hComm, 0);	//disables all events
		PurgeComm(hComm, PURGE_TXCLEAR | PURGE_RXCLEAR);	/* 清除收/發(fā)緩沖 */
		CloseHandle(hComm);								/* 關閉串口操作句柄 */
		hComm = INVALID_HANDLE_VALUE;
		return TRUE;
	}

	return FALSE;
}
void CALLBACK CSerialDlg::OnComRecv(CWnd* pWnd, char *buf, int buflen)
{    
	  CString tmp;
      CSerialDlg *pDlg = (CSerialDlg*)pWnd;
	  CEdit *pRecvStrEdit = (CEdit*)pDlg->GetDlgItem(IDC_REV);
	  for (int i = 0; i < buflen; i++, buf++)
	{
		tmp.Format(_T("%c"), *buf);	/* 將字符轉換為字符串 */
		pDlg->strRecDisp += tmp;
	}
	pRecvStrEdit->SetWindowText(pDlg->strRecDisp);	/* 顯示在窗口上 */
}
DWORD CSerialDlg::ComRecvThread(LPVOID lparam)
{
    DWORD dwLength;
	char *recvBuf = new char[1024];
	CSerialDlg *pDlg = (CSerialDlg*)lparam;

	while(TRUE)
	{		
		
		/* 等待線程退出事件 */
		if (WaitForSingleObject(pDlg->ExitThreadEvent, 0) == WAIT_OBJECT_0)
			break;	

		if (pDlg->hComm != INVALID_HANDLE_VALUE)
		{															/* 從串口讀取數據 */
			BOOL fReadState = ReadFile(pDlg->hComm, recvBuf, 1024, &dwLength, NULL);
			if(!fReadState)
			{
				//MessageBox(_T("無法從串口讀取數據!"));
			}
			else
			{
				if(dwLength != 0)
				OnComRecv(pDlg, recvBuf, dwLength-2);		/* 接收成功調用回調函數 */
			
			}
		}
      
	}		

	delete[] recvBuf;
	return 0;

}
 void CSerialDlg::OnOpenCom()
{  
	DWORD IDThread;
	HANDLE hRecvThread;	
	UpdateData(TRUE);                           /*把控件的值傳給變量*/
	CString strPort =_T("COM1:");				/* 設置參數值 */
	DWORD baud		= 115200;
	DWORD databit   = 8;
	BYTE stopbit    = ONESTOPBIT;
	BYTE parity		= NOPARITY;
	BOOL ret = OpenPort(strPort, baud, databit, stopbit, parity);	/* 打開串口 */
	if (ret == FALSE)
		return;
	ExitThreadEvent = CreateEvent(NULL, TRUE, FALSE, NULL);		/* 創(chuàng)建串口接收線程退出事件*/
	hRecvThread = CreateThread(0, 0, ComRecvThread, this, 0, &IDThread);
	if (hRecvThread == NULL) 
	{
		MessageBox(_T("創(chuàng)建接收線程失敗!"));
		return;
	}
	CloseHandle(hRecvThread);

	ButOpen.EnableWindow(FALSE);									/* 打開端口按鍵禁止 */				
	ButClose.EnableWindow(TRUE);									/* 關閉端口按鍵使能 */	
	MessageBox(_T("打開串口COM1成功!"));

 }
 void CSerialDlg::OnCloseCom()
 {
   if (ExitThreadEvent != NULL)
	{
		SetEvent(ExitThreadEvent);					/* 通知線程退出 */
		Sleep(1000);
		CloseHandle(ExitThreadEvent);
		ExitThreadEvent = NULL;
	}

	ButOpen.EnableWindow(TRUE);						/* 打開端口按鍵禁止 */				
	ButClose.EnableWindow(FALSE);						/* 關閉端口按鍵使能 */	
	ClosePort();
}
 void CSerialDlg::OnSend()
 {
	DWORD dwactlen;
   char *recvBuf = new char[1024];
	if (hComm == INVALID_HANDLE_VALUE)
	{
		MessageBox(_T("串口未打開!"));
		return;
	}
	UpdateData(TRUE);
	int len = strSendEdit.GetLength();				 /* 取得輸入字符串長度 */
	char *psendbuf = new char[len];

	for(int i = 0; i < len;i++)
		psendbuf[i] = (char)strSendEdit.GetAt(i);		 /* 轉換為單字節(jié)字符 */

	WriteFile(hComm, psendbuf, len, &dwactlen, NULL);	 /* 從串口發(fā)送數據 */
	WriteFile(hComm, "\r", 1, &dwactlen, NULL);	 /* 發(fā)送回車,weibing */

	delete[] psendbuf;
 }
 void CSerialDlg::OnDestroy()
 {
    CDialog::OnDestroy();
	
	if (ExitThreadEvent != NULL)
	{
		SetEvent(ExitThreadEvent);				/* 通知串口接收線程退出 */
		Sleep(1000);
		CloseHandle(ExitThreadEvent);				/* 關閉接收線程退出事件句柄 */
		ExitThreadEvent = NULL;
	}
	ClosePort();									/* 關閉串口 */

 }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久av毛片精品| 香蕉影视欧美成人| 亚洲一区二区三区四区的 | 国产成人在线电影| 久久精品亚洲国产奇米99| 中文字幕一区二区三区乱码在线| 日本特黄久久久高潮| 色婷婷精品久久二区二区蜜臀av| 日韩精品一区二区三区老鸭窝| 亚洲免费色视频| 丁香一区二区三区| 精品国产3级a| 日韩国产精品91| 色悠悠久久综合| 国产精品毛片高清在线完整版| 免费在线看一区| 欧美电影一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品亚洲一区二区三区妖精| 欧美一区二区三区爱爱| 日韩成人精品视频| 欧美视频在线一区二区三区| 亚洲人成在线观看一区二区| 成人av电影在线| 国产精品久久久久影院亚瑟 | 精品久久人人做人人爰| 亚洲成精国产精品女| 欧美性一二三区| 亚洲主播在线播放| 欧美日韩国产精品成人| 午夜激情综合网| 日韩一区二区在线观看视频| 午夜不卡在线视频| 欧美一卡2卡3卡4卡| 人禽交欧美网站| 日韩亚洲国产中文字幕欧美| 久久99国产精品尤物| 日韩欧美色综合| 国产综合色精品一区二区三区| 91精品国产综合久久福利| 七七婷婷婷婷精品国产| 日韩欧美在线观看一区二区三区| 美女网站在线免费欧美精品| 337p日本欧洲亚洲大胆色噜噜| 国产在线精品免费av| 国产精品人成在线观看免费 | 国内精品视频一区二区三区八戒| 久久综合久久99| 成人精品电影在线观看| 18成人在线视频| 欧美午夜一区二区三区免费大片| 亚洲精品ww久久久久久p站| 88在线观看91蜜桃国自产| 美女mm1313爽爽久久久蜜臀| 日本一区二区三区国色天香| 91女神在线视频| 日韩电影免费在线| 国产喷白浆一区二区三区| 色综合中文字幕| 老司机精品视频导航| 国产精品毛片大码女人| 5858s免费视频成人| 国产精品一区二区黑丝| 亚洲自拍偷拍综合| 久久久久久久久免费| 91久久精品一区二区| 九色综合国产一区二区三区| 中文字幕在线一区| 欧美一区二区三区不卡| 色悠久久久久综合欧美99| 蜜臀精品久久久久久蜜臀| 国产精品麻豆网站| 日韩欧美成人一区二区| 色婷婷精品大在线视频 | 亚洲丶国产丶欧美一区二区三区| www久久精品| 欧美系列日韩一区| 国产suv精品一区二区883| 亚洲国产精品一区二区久久| 久久久精品影视| 欧美日韩高清一区二区不卡| 99热在这里有精品免费| 免费在线观看日韩欧美| 亚洲一区成人在线| 国产精品国产精品国产专区不蜜| 欧美日韩国产色站一区二区三区| 99热精品国产| 国产成人午夜99999| 免费成人av在线| 亚州成人在线电影| 亚洲免费伊人电影| 中文字幕一区二区三区色视频| 精品日韩欧美一区二区| 91麻豆精品国产91久久久久久久久| 成人av一区二区三区| 国产真实乱偷精品视频免| 日本欧美肥老太交大片| 亚洲国产精品久久久久秋霞影院 | 成人免费视频app| 精品在线观看视频| 日韩精品免费视频人成| 亚洲高清免费在线| 亚洲国产精品影院| 亚洲永久免费av| 亚洲人成精品久久久久久 | 日韩午夜激情av| 欧美日韩国产一区二区三区地区| 日本乱人伦aⅴ精品| 99久久久久久99| 99re在线视频这里只有精品| 不卡视频一二三| 成人av第一页| 91丨九色丨国产丨porny| 99re这里只有精品首页| 色哟哟国产精品免费观看| 色综合久久88色综合天天| 91蜜桃在线免费视频| 91精彩视频在线| 欧美性大战xxxxx久久久| 欧美另类z0zxhd电影| 7777精品伊人久久久大香线蕉最新版 | 欧美伊人久久久久久久久影院| 91丝袜美腿高跟国产极品老师 | 亚洲免费视频成人| 亚洲国产sm捆绑调教视频| 三级影片在线观看欧美日韩一区二区| 视频一区二区中文字幕| 美女视频黄频大全不卡视频在线播放| 蜜桃av一区二区在线观看 | 91电影在线观看| 欧美人牲a欧美精品| 精品国产乱码久久久久久老虎| 国产偷v国产偷v亚洲高清| 亚洲人吸女人奶水| 日韩电影在线免费看| 国产一区二区三区四区五区入口| 国产精品99久久久久久似苏梦涵| av在线一区二区三区| 欧美制服丝袜第一页| 日韩欧美你懂的| 国产欧美日韩亚州综合| 一区二区三区精品视频| 裸体一区二区三区| 成人在线视频一区| 欧美午夜电影网| 精品国产伦一区二区三区观看体验| 国产精品嫩草99a| 五月激情综合婷婷| 成人久久18免费网站麻豆| 在线免费观看一区| 26uuu亚洲综合色| 亚洲一级二级在线| 风间由美一区二区av101| 欧美日韩一区二区在线观看视频| 亚洲精品一区二区三区福利| 亚洲免费三区一区二区| 韩国成人精品a∨在线观看| 91香蕉国产在线观看软件| 精品久久久网站| 亚洲一区在线观看免费| 国产一区二区三区香蕉| 91丨九色丨蝌蚪富婆spa| 91精品国产综合久久精品| 国产精品美女久久久久久| 五月婷婷久久综合| 国产精品亚洲第一| 欧美精品aⅴ在线视频| 国产精品久久久爽爽爽麻豆色哟哟 | 懂色一区二区三区免费观看| 欧美性猛片aaaaaaa做受| 日本一区二区三区久久久久久久久不| 午夜精品久久久久久久99水蜜桃| aaa亚洲精品一二三区| 精品999久久久| 日韩不卡手机在线v区| 色狠狠综合天天综合综合| 国产精品美女久久久久久久| 免费三级欧美电影| 99在线精品一区二区三区| 日韩一级在线观看| 国产中文字幕一区| 91精品蜜臀在线一区尤物| 一区二区三区欧美久久| 91亚洲国产成人精品一区二区三| 久久久国产精品午夜一区ai换脸| 日本亚洲三级在线| 欧美丝袜自拍制服另类| 亚洲蜜臀av乱码久久精品| 成人午夜看片网址| 久久精品视频网| 韩国一区二区视频| 精品卡一卡二卡三卡四在线| 蜜臀久久99精品久久久久宅男| 欧美日韩在线播放三区| 亚洲综合av网| 欧美三级电影网| 性久久久久久久久久久久| 欧美日韩在线播放一区| 日韩电影在线观看电影| 91精品在线免费|