⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synccomview.cpp

📁 VC的串口同步例子
💻 CPP
字号:
// SyncComView.cpp : implementation of the CSyncComView 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

CSyncComView* p_View;
/////////////////////////////////////////////////////////////////////////////
// CSyncComView

IMPLEMENT_DYNCREATE(CSyncComView, CEditView)

BEGIN_MESSAGE_MAP(CSyncComView, CEditView)
	//{{AFX_MSG_MAP(CSyncComView)
	ON_UPDATE_COMMAND_UI(IDC_DTRCHECK, OnUpdateDtrcheck)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
	ON_MESSAGE(MSG_REPORTRECEIVE,OnReceive)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSyncComView construction/destruction

CSyncComView::CSyncComView()
{
 p_View = this;
 pos=1;
}

CSyncComView::~CSyncComView()
{
}

BOOL CSyncComView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	BOOL bPreCreated = CEditView::PreCreateWindow(cs);
	cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL);	// Enable word-wrapping

	return bPreCreated;
}

/////////////////////////////////////////////////////////////////////////////
// CSyncComView drawing

void CSyncComView::OnDraw(CDC* pDC)
{
	CSyncComDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CSyncComView printing

BOOL CSyncComView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default CEditView preparation
	return CEditView::OnPreparePrinting(pInfo);
}

void CSyncComView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// Default CEditView begin printing.
	CEditView::OnBeginPrinting(pDC, pInfo);
}

void CSyncComView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// Default CEditView end printing
	CEditView::OnEndPrinting(pDC, pInfo);
}

/////////////////////////////////////////////////////////////////////////////
// CSyncComView diagnostics

#ifdef _DEBUG
void CSyncComView::AssertValid() const
{
	CEditView::AssertValid();
}

void CSyncComView::Dump(CDumpContext& dc) const
{
	CEditView::Dump(dc);
}

CSyncComDoc* CSyncComView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSyncComDoc)));
	return (CSyncComDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CSyncComView message handlers

LRESULT CSyncComView::OnReceive(WPARAM wParam, LPARAM lParam)
{
     char buf[MAXBLOCK/4];
	 CString str;
	 int nLength,nTextLength,resu;
	 CSyncComDoc* pDoc = GetDocument();
	 CEdit& edit = GetEditCtrl();
	 if((!pDoc->m_bConnected||wParam & EV_RXCHAR)!=EV_RXCHAR)
		 //是否有数据进入
	 {
        SetEvent(pDoc->m_hPostMsgEvent);//允许发送下一个WM_COMMNOTIFY消息
		return 0L;
	 }       
 
     nLength = pDoc->ReadComm(buf,100);
	  if(nLength)//如果有数据缓冲区
	  {
       nTextLength = edit.GetWindowTextLength();
	   edit.SetSel(nTextLength,nTextLength);//移到光标到文件尾
       for(int i=0;i<nLength;i++)
	   {
        switch(buf[i])
		{
        case 'r':  //回车
			if(!pDoc->m_bNewLine)
				break;
        case '\n'://换行
			str+="\r\n";
			break;
		case '\b': //退格
			edit.SetSel(-1,0);
			edit.ReplaceSel(str);
			nTextLength = edit.GetWindowTextLength();
			edit.SetSel(nTextLength-1,nTextLength);
			edit.ReplaceSel("");//回退一个字符
			str="";
			break;
		default:
			str+=buf[i];
	   }
	  }
       edit.SetSel(-1,0);
       edit.ReplaceSel(str);//向编辑视图中插入收到的字符
	  }
	  SetEvent(pDoc->m_hPostMsgEvent);//运许发送下一个消息,即置为有信号
	  return 0L;
}




void CSyncComView::OnUpdateDtrcheck(CCmdUI* pCmdUI) 
{
	if(pos==1)
   {
	   pCmdUI->SetCheck(true); 	
   }
   else
   {
	   pCmdUI->SetCheck(false); 	
   }		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -