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

📄 pagecomevents.cpp

📁 下面是串口通信开发的部分原码,自己写的,可能有些错误,希望大大家指教.
💻 CPP
字号:
#include "StdAfx.h"
#include "SerialTestMFC.h"
#include "PageComEvents.h"
#include "Serial.h"

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


/////////////////////////////////////////////////////////////////////////////
// CPageComEvents property page

BEGIN_MESSAGE_MAP(CPageComEvents, CPropertyPage)
	//{{AFX_MSG_MAP(CPageComEvents)
	ON_BN_CLICKED(IDC_EVENT_RCV_EV, OnEventRcvEv)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CPageComEvents methods

CPageComEvents::CPageComEvents(CSerial* pSerial)
	: CPropertyPage(CPageComEvents::IDD)
	, m_pSerial(pSerial)
{
	// Obtain all settings from the serial port
	DWORD dwEvents = m_pSerial->GetEventMask();
	m_fBreak     = ((dwEvents & CSerial::EEventBreak) != 0);
	m_fCTS       = ((dwEvents & CSerial::EEventCTS  ) != 0);
	m_fDSR       = ((dwEvents & CSerial::EEventDSR  ) != 0);
	m_fError     = ((dwEvents & CSerial::EEventError) != 0);
	m_fEventChar = ((dwEvents & CSerial::EEventRcvEv) != 0);
	m_fRecv      = ((dwEvents & CSerial::EEventRecv ) != 0);
	m_fRing      = ((dwEvents & CSerial::EEventRing ) != 0);
	m_fRLSD      = ((dwEvents & CSerial::EEventRLSD ) != 0);
	m_fSend      = ((dwEvents & CSerial::EEventSend ) != 0);

	// Obtain the event character
	m_bEventChar = m_pSerial->GetEventChar();

}

void CPageComEvents::DoDataExchange(CDataExchange* pDX)
{
	// Call base class
	CPropertyPage::DoDataExchange(pDX);

	//{{AFX_DATA_MAP(CPageComEvents)
	DDX_Check(pDX, IDC_EVENT_BREAK, m_fBreak);
	DDX_Check(pDX, IDC_EVENT_CTS, m_fCTS);
	DDX_Check(pDX, IDC_EVENT_DSR, m_fDSR);
	DDX_Check(pDX, IDC_EVENT_ERROR, m_fError);
	DDX_Check(pDX, IDC_EVENT_RCV_EV, m_fEventChar);
	DDX_Check(pDX, IDC_EVENT_RECV, m_fRecv);
	DDX_Check(pDX, IDC_EVENT_RING, m_fRing);
	DDX_Check(pDX, IDC_EVENT_RLSD, m_fRLSD);
	DDX_Check(pDX, IDC_EVENT_SEND, m_fSend);
	DDX_Text(pDX, IDC_EVENT_CHAR_VALUE, m_bEventChar);
	DDV_MinMaxByte(pDX, m_bEventChar, 0, 255);
	//}}AFX_DATA_MAP
}

BOOL CPageComEvents::OnInitDialog() 
{
	// Call base class
	CPropertyPage::OnInitDialog();

	// Update event character settings
	OnEventRcvEv();
	return TRUE;
}

BOOL CPageComEvents::OnApply() 
{
	// Retrieve the settings from the page
	UpdateData(true);

	// Determine the events
	DWORD dwEvents = 0;
	if (m_fBreak)     dwEvents |= CSerial::EEventBreak;
	if (m_fCTS)       dwEvents |= CSerial::EEventCTS;
	if (m_fDSR)       dwEvents |= CSerial::EEventDSR;
	if (m_fError)     dwEvents |= CSerial::EEventError;
	if (m_fEventChar) dwEvents |= CSerial::EEventRcvEv;
	if (m_fRecv)      dwEvents |= CSerial::EEventRecv;
	if (m_fRing)      dwEvents |= CSerial::EEventRing;
	if (m_fRLSD)      dwEvents |= CSerial::EEventRLSD;
	if (m_fSend)      dwEvents |= CSerial::EEventSend;
	
	// Setup handshaking
	if (m_pSerial->SetMask(dwEvents))
		return false;

	// Setup the event character
	if (m_pSerial->SetEventChar(m_bEventChar,false))
		return false;

	// Call base class
	return CPropertyPage::OnApply();
}

void CPageComEvents::OnEventRcvEv() 
{
	// Determine whether the event character is being used
	BOOL fUseEventChar = (SendDlgItemMessage(IDC_EVENT_RCV_EV,BM_GETCHECK) == BST_CHECKED);

	// Enable/disable event character windows
	GetDlgItem(IDC_EVENT_CHAR)->EnableWindow(fUseEventChar);
	GetDlgItem(IDC_EVENT_CHAR_TEXT)->EnableWindow(fUseEventChar);
	GetDlgItem(IDC_EVENT_CHAR_VALUE)->EnableWindow(fUseEventChar);
}

⌨️ 快捷键说明

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