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

📄 receiveview.cpp

📁 电脑与单片机的通信代码,适合做毕业设计的同学使用.
💻 CPP
字号:
// receiveView.cpp : implementation of the CReceiveView class
//

#include "stdafx.h"
#include "receive.h"

#include "receiveDoc.h"
#include "receiveView.h"
#include <stdio.h>
#include <string.h>

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

const MaxStringLen=40;
const X0=10;
const Y0=10;
static char buffer[MaxStringLen+1]="";
static HANDLE m_idComDev;
DWORD ErrorFlag;
COMSTAT ComState;
/////////////////////////////////////////////////////////////////////////////
// CReceiveView

IMPLEMENT_DYNCREATE(CReceiveView, CEditView)

BEGIN_MESSAGE_MAP(CReceiveView, CEditView)
	//{{AFX_MSG_MAP(CReceiveView)
	ON_WM_TIMER()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CReceiveView construction/destruction

CReceiveView::CReceiveView()
{
	// TODO: add construction code here

}

CReceiveView::~CReceiveView()
{
}

BOOL CReceiveView::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;
}

/////////////////////////////////////////////////////////////////////////////
// CReceiveView drawing

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

/////////////////////////////////////////////////////////////////////////////
// CReceiveView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CReceiveView message handlers



void CReceiveView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	
//	m_bConnected=true; 
//	while (m_bConnected) 
//	{
//	BOOL m_bConnected;

	
	DWORD iLength;
	CString FileSizeStr;
	BOOL rc,AB;

	AB=ClearCommError(m_idComDev,&ErrorFlag,&ComState);

	iLength=ComState.cbInQue; 
	if(iLength>0) 
	rc = ReadFile(m_idComDev, buffer, iLength,
			&iLength,NULL);

//	CClientDC dc(this);
//	dc.TextOut(X0,Y0,buffer,strlen(buffer));
	//CloseHandle(m_idComDev);
//	MessageBox("接收档案资料完毕!","接收成功!",MB_OK);
	CString strTmp, strTmp1;
	GetWindowText (strTmp);
	strTmp1 = buffer;
	strTmp += strTmp1.Left (iLength);

    SetWindowText (strTmp);
	
	CEditView::OnTimer(nIDEvent);
}

int CReceiveView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CEditView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	
//	BOOL m_bConnected;
	DCB dcb;
	int comstate;
	if ((m_idComDev = CreateFile("COM2", GENERIC_READ, 0,
		NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED, NULL))== (HANDLE)-1) 
	{
		MessageBox("无法开放通讯口,请检查是否有此通讯口!","错误!",MB_ICONERROR);
	}
	
/*	CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
    CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
    CommTimeOuts.ReadTotalTimeoutConstant = 1000;
    CommTimeOuts.WriteTotalTimeoutMultiplier = 2*CBR_9600/19200;
    CommTimeOuts.WriteTotalTimeoutConstant = 0;
    SetCommTimeouts(m_idComDev, &CommTimeOuts);
	COMMTIMEOUTS CommTimeouts;
	GetCommTimeouts(m_idComDev, &CommTimeouts);
	CommTimeouts.ReadIntervalTimeout = MAXWORD;
	CommTimeouts.ReadTotalTimeoutConstant = 1000;
	CommTimeouts.ReadTotalTimeoutMultiplier = 0;
	CommTimeouts.WriteTotalTimeoutConstant = 0;	
	CommTimeouts.WriteTotalTimeoutMultiplier = 1000;
	SetCommTimeouts(m_idComDev, &CommTimeouts);
*/
	//setup=SetupComm(m_idComDev,8192,8192);
	GetCommState(m_idComDev, &dcb);
	UINT ComBaud = 9600;
	dcb.BaudRate = ComBaud;
	dcb.ByteSize = 8;
	dcb.Parity =  NOPARITY;
	dcb.StopBits = ONESTOPBIT;
	/*dcb.EvtChar = 0x0d;
//	Builddcb("COM1: 96,n,8,1 ", &dcb);
	dcb.fDtrControl = DTR_CONTROL_ENABLE;
	dcb.fRtsControl = RTS_CONTROL_ENABLE;
	dcb.fInX = dcb.fOutX = 1;
    dcb.XonLim = dcb.XoffLim = 100 ;
	dcb.XonChar = 0x11;
	dcb.XoffChar = 0x13;
	dcb.fBinary = TRUE ;
	dcb.fParity = TRUE ;*/
    comstate=SetCommState(m_idComDev, &dcb);

	SetTimer(1, 500, 0);

	return TRUE;
	
}

⌨️ 快捷键说明

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