📄 scommtestview.cpp
字号:
// sCommTestView.cpp : implementation of the CSCommTestView class
//
#include "stdafx.h"
#include "sCommTest.h"
#include "sCommTestDoc.h"
#include "mscomm.h"
#include "sCommTestView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSCommTestView
IMPLEMENT_DYNCREATE(CSCommTestView, CView)
BEGIN_MESSAGE_MAP(CSCommTestView, CView)
//{{AFX_MSG_MAP(CSCommTestView)
ON_WM_CREATE()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
BEGIN_EVENTSINK_MAP(CSCommTestView, CView)
//{{AFX_EVENTSINK_MAP(CAboutDlg)
ON_EVENT(CSCommTestView, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSCommTestView construction/destruction
CSCommTestView::CSCommTestView()
{
// TODO: add construction code here
}
CSCommTestView::~CSCommTestView()
{
}
BOOL CSCommTestView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CSCommTestView drawing
void CSCommTestView::OnDraw(CDC* pDC)
{
CSCommTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CSCommTestView printing
BOOL CSCommTestView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CSCommTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CSCommTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CSCommTestView diagnostics
#ifdef _DEBUG
void CSCommTestView::AssertValid() const
{
CView::AssertValid();
}
void CSCommTestView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CSCommTestDoc* CSCommTestView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSCommTestDoc)));
return (CSCommTestDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSCommTestView message handlers
int CSCommTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_MSComm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);
if(m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
m_MSComm.SetPortOpen(FALSE);
m_MSComm.SetCommPort(1); //选择COM?
m_MSComm.SetInBufferSize(1024); //接收缓冲区
m_MSComm.SetOutBufferSize(1024);//发送缓冲区
m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_MSComm.SetInputMode(1);//以二进制方式读写数据
m_MSComm.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
m_MSComm.SetSettings("9600,n,8,1");//波特率9600无检验位,8个数据位,1个停止位
if(!m_MSComm.GetPortOpen())//如果串口没有打开则打开
m_MSComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("Open Serial Port Failure!");
m_MSComm.GetInput(); //先预读缓冲区以清除残留数据
return 0;
}
void CSCommTestView::OnComm()
{
// TODO: Add your control notification handler code here
CString strtemp;
strtemp.Format("OK,I've received some data!\r\n");
m_MSComm.SetOutput(COleVariant(strtemp));//发送数据
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -