📄 receiveview.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 + -