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

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

?? synccomdoc.cpp

?? VC的串口同步例子
?? CPP
字號:
// SyncComDoc.cpp : implementation of the CSyncComDoc class
//

#include "stdafx.h"
#include "SyncCom.h"


#include "SyncComDoc.h"
#include "SyncComView.h"

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

extern CSyncComView* p_View;
/////////////////////////////////////////////////////////////////////////////
// CSyncComDoc

IMPLEMENT_DYNCREATE(CSyncComDoc, CDocument)

BEGIN_MESSAGE_MAP(CSyncComDoc, CDocument)
	//{{AFX_MSG_MAP(CSyncComDoc)
	ON_COMMAND(IDC_CONNECTION, OnConnection)
	ON_COMMAND(IDC_SEND, OnSend)
	ON_COMMAND(IDC_DTRCHECK, OnDtrcheck)
	ON_COMMAND(IDC_DISCONNECTION, OnDisconnection)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSyncComDoc construction/destruction

CSyncComDoc::CSyncComDoc()
{
m_pThread= NULL; 
m_bConnected = FALSE;
m_nBaud = 230400;
m_nDataBits = 8;
m_bEcho = FALSE;
m_nParity = 0;
m_nStopBits = 0;
m_sPort = "COM1";
m_bNewLine = FALSE;
m_nFlowCtrl = 0;
pos=1;
}

CSyncComDoc::~CSyncComDoc()
{
CloseComm();
}

BOOL CSyncComDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;
    if(!Initialize())
	{
    	AfxMessageBox("打開串口失敗!");	
	}
	if(!ConfigConnection())
	{
    	AfxMessageBox("初始化串口失敗!");	
	}

	((CEditView*)m_viewList.GetHead())->SetWindowText(NULL);

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CSyncComDoc serialization

void CSyncComDoc::Serialize(CArchive& ar)
{
	// CEditView contains an edit control which handles all serialization
	((CEditView*)m_viewList.GetHead())->SerializeRaw(ar);
}

/////////////////////////////////////////////////////////////////////////////
// CSyncComDoc diagnostics

#ifdef _DEBUG
void CSyncComDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CSyncComDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSyncComDoc commands
BOOL CSyncComDoc::Initialize()//初始化串口
{
	COMMTIMEOUTS TimeOuts;
    m_hCom = CreateFile(m_sPort,GENERIC_READ|GENERIC_WRITE,0,NULL,
		                OPEN_EXISTING,0,NULL);//同步方式
	if(m_hCom==INVALID_HANDLE_VALUE)
		return FALSE;
    SetupComm(m_hCom,MAXBLOCK,MAXBLOCK);
	SetCommMask(m_hCom,EV_RXCHAR);
    PurgeComm(m_hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);//清干凈輸入、輸出緩沖區
	//把間隔超時設為最大,把總超時設為0,將導致ReadFile立即返回并完成操作
    TimeOuts.ReadIntervalTimeout = MAXDWORD;
	TimeOuts.ReadTotalTimeoutMultiplier = 0;
	TimeOuts.ReadTotalTimeoutConstant = 0;
	/*設置寫操時*/
	TimeOuts.WriteTotalTimeoutMultiplier = 0;
	TimeOuts.WriteTotalTimeoutConstant = 0;
	SetCommTimeouts(m_hCom,&TimeOuts);
    return TRUE;
}

BOOL CSyncComDoc::OpenConnection()
{
      m_pThread = AfxBeginThread(CommProc,this,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
      if(m_pThread==NULL)//線程創建不成功
	   {
     	CloseHandle(m_hCom);
        return FALSE; 
	   }
       else  //線程成功
	   {
        m_bConnected = TRUE;
		m_pThread->ResumeThread();//恢復線程運行
	   }
	return TRUE;

}
BOOL CSyncComDoc::ConfigConnection()
{
	if(!GetCommState(m_hCom,&dcb))
	return FALSE;
    dcb.fBinary = TRUE;
	dcb.BaudRate = m_nBaud;//波特率
	dcb.ByteSize = m_nDataBits;//字節數
	dcb.fParity = m_nParity;//是否校驗
	switch(m_nParity)//校驗
	{
	case 0:
		dcb.Parity = NOPARITY;
        break;
	case 1:
		dcb.Parity = EVENPARITY;
   	     break;
	case 2:
		 dcb.Parity = ODDPARITY;
	     break;  
	default:;
	}

	switch(m_nStopBits)//停止位
	{
	case 0:
		dcb.StopBits = ONESTOPBIT;
		break;
	case 1:
		 dcb.StopBits = ONE5STOPBITS;
        break;
	case 2:
		 dcb.StopBits = TWOSTOPBITS;
		 break;
	default:;
	}

return SetCommState(m_hCom,&dcb);
}

UINT CommProc(LPVOID pParam)//該線程不屬于DOC
{
	DWORD dwMask,dwTrans;
    COMSTAT ComStat;//這個結構判斷是否有數據進入
    DWORD dwErrorFlags;
    CSyncComDoc* pDoc = (CSyncComDoc*)pParam; //所以要申明之
    CSyncComView* pView;

	ClearCommError(pDoc->m_hCom,&dwErrorFlags,&ComStat);
    PurgeComm(pDoc->m_hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);//清干凈輸入、輸出緩沖區
//應該在此加入控制語句
	while (pDoc->m_bConnected)//循環檢測串口
	{
	  ClearCommError(pDoc->m_hCom,&dwErrorFlags,&ComStat);
		if(ComStat.cbInQue)//是否有數據進入
		{
//同步操作不需要下面這一句
//         WaitForSingleObject(pDoc->m_hPostMsgEvent,INFINITE);
	       ResetEvent(pDoc->m_hPostMsgEvent);
          //下面發消息給VIEW,在VIEW中顯示收到的數據

        	p_View->SendMessage(MSG_REPORTRECEIVE,EV_RXCHAR,NULL);
            continue;
		}

    dwMask=0;
/*	if (!WaitCommEvent(pDoc->m_hCom,&dwMask,NULL))// 等待串口通信事件的發生,只用于異步結構
	   {
          dwErrorFlags = GetLastError();
          //返回ERROR_INVALID_HANDLE錯誤
	   }*///這一段放開后,線程停不了,串口關不了,為什么?是同步和異步的關系的嗎?
	}

    CloseHandle(pDoc->m_hCom);
    return 0;
}

void CSyncComDoc::OnConnection() 
{
  if(!OpenConnection())
  {
	AfxMessageBox("打開串口失敗!");	
  }

}

DWORD CSyncComDoc::ReadComm(char* buf,DWORD dwLength)//從串口讀取
{ 
 DWORD length = 0;
 COMSTAT ComStat;
 DWORD dwErrorFlags;
 ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
 length = min(dwLength,ComStat.cbInQue);
 ReadFile(m_hCom,buf,length,&length,NULL);//不使用異步方式
	return length;
}

void CSyncComDoc::OnSend() //發送數據
{
   char szMessage[20] = "qqqqq you very much";
   int s;
   s = strlen(szMessage);
   DWORD dwBytesWritten;

//   PurgeComm(pDoc->m_hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);//清干凈輸入、輸出緩沖區
   if(!WriteFile(m_hCom, (LPSTR)&szMessage, s, &dwBytesWritten, NULL))
   {
 	AfxMessageBox("kkkkkkkkk失敗!");	
   }
 
}



void CSyncComDoc::OnDtrcheck() 
{
 int resu;
// dcb.fDtrControl = DTR_CONTROL_DISABLE;
// m_bConnected = FALSE;
// resu = SetCommState(m_hCom,&dcb);
 
   if(p_View->pos==1)
   {
    p_View->pos=2;
    dcb.fDtrControl = DTR_CONTROL_DISABLE;
    resu = SetCommState(m_hCom,&dcb);
//    resu = EscapeCommFunction(m_hCom,CLRDTR);
   }
   else 
   {
	p_View->pos=1;	
    dcb.fDtrControl = DTR_CONTROL_DISABLE;
    resu = SetCommState(m_hCom,&dcb);
   }
}

BOOL CSyncComDoc::CloseComm()
{
   if (!m_bConnected)
		return FALSE;
	m_bConnected=FALSE; 
	m_pThread=NULL;
	CloseHandle(m_hCom);
	return TRUE;
}

void CSyncComDoc::OnDisconnection() 
{
	CloseComm();	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合视频网| 一本大道久久a久久综合| 日韩三级.com| 久久超级碰视频| 久久精品男人的天堂| 国产mv日韩mv欧美| 亚洲欧美aⅴ...| 欧美久久久一区| 久久99久久久欧美国产| 久久精品免视看| 色综合久久久久久久久久久| 午夜视频久久久久久| 日韩三级在线观看| 国产不卡视频在线观看| 一区二区三区四区激情 | 亚洲综合色在线| 欧美日韩视频在线观看一区二区三区| 日本不卡的三区四区五区| 久久精品视频网| 91高清在线观看| 激情五月婷婷综合网| 国产精品成人网| 在线成人高清不卡| 国产99久久久国产精品潘金网站| 亚洲另类中文字| 欧美r级在线观看| 99久久精品国产毛片| 欧美96一区二区免费视频| 中文文精品字幕一区二区| 欧美日韩成人综合在线一区二区| 国产福利91精品一区二区三区| 亚洲最大成人综合| 久久亚洲精精品中文字幕早川悠里| 91丨九色丨国产丨porny| 久久国产福利国产秒拍| 日韩美女视频一区二区| 日韩视频免费观看高清在线视频| 色综合久久久久久久久久久| 精品在线一区二区| 一区二区三区在线观看欧美| 国产午夜精品一区二区| 7777精品久久久大香线蕉| 91在线一区二区三区| 狠狠色丁香久久婷婷综合_中| 夜色激情一区二区| 国产精品热久久久久夜色精品三区| 欧美另类高清zo欧美| 色呦呦国产精品| 成人午夜电影小说| 国内精品在线播放| 肉丝袜脚交视频一区二区| 亚洲人成精品久久久久久| 欧美极品美女视频| 精品福利二区三区| 欧美一二三四区在线| 91啦中文在线观看| 成人精品gif动图一区| 精品亚洲免费视频| 日韩黄色免费电影| 亚洲午夜一区二区| 一区二区三区在线视频观看| 中文字幕欧美三区| 国产亚洲va综合人人澡精品 | 亚洲免费三区一区二区| 国产精品视频线看| 国产午夜三级一区二区三| 精品国产伦理网| 日韩视频在线你懂得| 日韩女优毛片在线| 日韩欧美国产精品一区| 日韩女优av电影在线观看| 欧美一区二区三区在线视频| 欧美精品一卡二卡| 538在线一区二区精品国产| 欧美日韩不卡在线| 91精品国产综合久久久久久久久久 | 亚洲综合色在线| 亚洲综合色网站| 亚洲一二三四区不卡| 亚洲成人av资源| 免费欧美在线视频| 精品无人码麻豆乱码1区2区| 国内久久精品视频| 国产不卡一区视频| 99久久婷婷国产综合精品| 色综合久久久久久久久久久| 在线免费不卡电影| 欧美日韩精品三区| 日韩欧美久久久| 久久精品夜色噜噜亚洲a∨| 国产片一区二区三区| 日韩伦理av电影| 亚洲妇熟xx妇色黄| 久久精品理论片| 国产精品亚洲专一区二区三区| 成人精品电影在线观看| 在线观看亚洲精品| 欧美人伦禁忌dvd放荡欲情| 欧美大片国产精品| 国产精品私人影院| 亚洲国产一区二区三区| 蜜桃精品在线观看| 成人av先锋影音| 欧美日韩专区在线| 日韩美女视频在线| 国产精品美女久久久久aⅴ国产馆| 亚洲精品一二三| 日本亚洲欧美天堂免费| 丁香激情综合国产| 欧美日韩精品一区二区三区蜜桃| 久久综合中文字幕| 亚洲精品免费一二三区| 美女mm1313爽爽久久久蜜臀| av激情成人网| 91麻豆精品国产91久久久久久久久| 久久精品日产第一区二区三区高清版 | 日韩国产一区二| 国产成人在线色| 欧美日韩午夜在线视频| 国产亲近乱来精品视频| 亚洲图片欧美综合| 国产一区二区三区免费播放| 91精品1区2区| 国产香蕉久久精品综合网| 亚洲高清久久久| 成人ar影院免费观看视频| 欧美日韩国产免费一区二区 | 精品系列免费在线观看| 色婷婷av一区| 久久久久久久久久久久久久久99 | 国产精品一二三区| 欧美日韩亚洲综合一区| 欧美高清一级片在线观看| 午夜伦欧美伦电影理论片| 99久久久国产精品免费蜜臀| 26uuu国产一区二区三区| 性久久久久久久| 91麻豆高清视频| 久久九九全国免费| 蜜臀久久99精品久久久久久9 | 国产精品美女久久久久久久久久久| 日韩成人dvd| 色999日韩国产欧美一区二区| 国产亚洲一二三区| 久久99精品久久久久| 欧美日韩国产一区二区三区地区| 亚洲欧美综合色| 国产乱人伦精品一区二区在线观看 | 欧美一区午夜精品| 一区二区三区欧美视频| 97精品电影院| 国产精品久久777777| 国产精品一区二区无线| 日韩精品专区在线影院重磅| 五月激情综合网| 欧美精选午夜久久久乱码6080| 亚洲欧洲中文日韩久久av乱码| 成人av在线播放网站| 国产日韩三级在线| 国产激情视频一区二区三区欧美 | 91黄色在线观看| 中文字幕日本乱码精品影院| 成人久久18免费网站麻豆| 久久精品人人做| 国产剧情一区在线| 2017欧美狠狠色| 国产裸体歌舞团一区二区| 精品国精品国产尤物美女| 久久超级碰视频| 久久亚洲二区三区| 国产一区二区按摩在线观看| 久久久精品中文字幕麻豆发布| 国产一区高清在线| 国产农村妇女毛片精品久久麻豆 | 精品理论电影在线| 激情五月婷婷综合网| 国产午夜亚洲精品午夜鲁丝片| 成人午夜视频免费看| 国产精品久久久一区麻豆最新章节| 成人18精品视频| 一区二区三区国产精华| 91成人国产精品| 日本美女一区二区三区视频| 日韩精品专区在线影院观看| 国产精品中文字幕欧美| 久久精品人人做人人综合| 99久久精品情趣| 亚洲国产综合色| 精品国产污污免费网站入口| 成人看片黄a免费看在线| 一个色妞综合视频在线观看| 欧美日韩色一区| 韩国v欧美v亚洲v日本v| 国产精品久久久久久久浪潮网站| 91久久人澡人人添人人爽欧美| 日韩精品1区2区3区| 久久久精品综合| 在线免费观看成人短视频| 久久99精品网久久| 亚洲精品美腿丝袜|