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

📄 rs232_dlg.cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 CPP
字号:
// RS232_DLG.cpp : implementation file
//

#include "stdafx.h"
#include "Demo_01Doc.h"
#include "Demo_01.h"
#include "RS232_DLG.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRS232_DLG dialog
CRS232_DLG::CRS232_DLG(CWnd* pParent /*=NULL*/)
	: CDialog(CRS232_DLG::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRS232_DLG)
	m_baud_1 = -1;
	m_baud_2 = -1;
	m_databit_1 = -1;
	m_databit_2 = -1;
	m_parity_1 = -1;
	m_parity_2 = -1;
	m_stopbit_1 = -1;
	m_stopbit_2 = -1;
	m_send1 = _T("");
	m_send2 = _T("");
	//}}AFX_DATA_INIT
}
void CRS232_DLG::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRS232_DLG)
	DDX_CBIndex(pDX, IDC_BAUD_RATE1, m_baud_1);
	DDX_CBIndex(pDX, IDC_BAUD_RATE2, m_baud_2);
	DDX_CBIndex(pDX, IDC_DATABIT1, m_databit_1);
	DDX_CBIndex(pDX, IDC_DATABIT2, m_databit_2);
	DDX_CBIndex(pDX, IDC_PARITY1, m_parity_1);
	DDX_CBIndex(pDX, IDC_PARITY2, m_parity_2);
	DDX_CBIndex(pDX, IDC_STOPBIT1, m_stopbit_1);
	DDX_CBIndex(pDX, IDC_STOPBIT2, m_stopbit_2);
	DDX_Text(pDX, IDC_COM_SEND1, m_send1);
	DDX_Text(pDX, IDC_COM_SEND2, m_send2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRS232_DLG, CDialog)
	//{{AFX_MSG_MAP(CRS232_DLG)
	ON_BN_CLICKED(IDC_OPEN_COM2, OnOpenCom2)
	ON_BN_CLICKED(IDC_OPEN_COM3, OnOpenCom3)
	ON_BN_CLICKED(IDC_PORT_SEND1, OnPortSend1)
	ON_BN_CLICKED(IDC_PORT_SEND2, OnPortSend2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRS232_DLG message handlers
//****************************************************************************
BOOL CRS232_DLG::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
//----------------- Demo_01 add -------------------
// initial set COM Port parameter
	m_baud_1= 0;
	m_baud_2= 0;
	m_parity_1= 0;
	m_parity_2= 0;
	m_databit_1= 1;
	m_databit_2= 1;
	m_stopbit_1= 0;
	m_stopbit_2= 0;		
	m_COM2= false;  m_COM3= false;
	UpdateData(FALSE);
//--------------- end of add ----------------------
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//****************************************************************************
void CRS232_DLG::OnOpenCom2() 
{
	// TODO: Add your control notification handler code here
//----------------- Demo_01 add -------------------
	int baud, databit, stopbit, flow;
	char parity;
	CString  msg;

	UpdateData(TRUE);
	if(m_COM2) return;

	if(m_baud_1 ==0) baud=9600;
	else if(m_baud_1 ==1) baud=19200;
	else if(m_baud_1 ==2) baud=38400;
	else if(m_baud_1 ==3) baud=57600;
	else { baud= 9600; m_baud_1= 0; }

	if(m_parity_1==0) parity= 'N';
	else if(m_parity_1==1) parity= 'E';
	else if(m_parity_1==2) parity= 'O';
	else { parity= 'N'; m_parity_1= 0; }

	if(m_databit_1==0) databit=7;
	else if(m_databit_1==1) databit=8;
	else { databit= 7; m_databit_1= 0; }

	if(m_stopbit_1==0) stopbit=1;
	else if(m_stopbit_1==1) stopbit=2;
	else { stopbit=1; m_stopbit_1= 0; }

	flow=0;
	if( seropen(2, baud, parity, databit, stopbit, flow)==false)
	{
		msg.Format(_T("Open COM2 error...."));
		AfxMessageBox(msg, MB_OK);
		return;
	}

	msg.Format(_T("Open COM2 OK...."));
	AfxMessageBox(msg, MB_OK);
	m_COM2= true;
	UpdateData(FALSE);	
//--------------- end of add ----------------------
}
//****************************************************************************
void CRS232_DLG::OnOpenCom3() 
{
	// TODO: Add your control notification handler code here
//----------------- Demo_01 add -------------------
	int baud, databit, stopbit, flow;
	char parity;
	CString  msg;

	UpdateData(TRUE);
	if(m_COM3) return;

	if(m_baud_2 ==0) baud=9600;
	else if(m_baud_2 ==1) baud=19200;
	else if(m_baud_2 ==2) baud=38400;
	else if(m_baud_2 ==3) baud=57600;
	else { baud= 9600; m_baud_2= 0; }

	if(m_parity_2==0) parity= 'N';
	else if(m_parity_2==1) parity= 'E';
	else if(m_parity_2==2) parity= 'O';
	else { parity= 'N'; m_parity_2= 0; }

	if(m_databit_2==0) databit=7;
	else if(m_databit_2==1) databit=8;
	else { databit= 7; m_databit_2= 0; }

	if(m_stopbit_2==0) stopbit=1;
	else if(m_stopbit_2==1) stopbit=2;
	else { stopbit=2; m_stopbit_2= 0; }

	flow=0;
	if( seropen(3, baud, parity, databit, stopbit, flow)==false)
	{
		msg.Format(_T("Open COM3 error...."));
		AfxMessageBox(msg, MB_OK);
		return;
	}

	msg.Format(_T("Open COM3 OK...."));
	AfxMessageBox(msg, MB_OK);
	m_COM3= true;
	UpdateData(FALSE);		
//--------------- end of add ----------------------
}
//****************************************************************************
void CRS232_DLG::OnPortSend1() 
{
	// TODO: Add your control notification handler code here
//----------------- Demo_01 add -------------------
	char  buff[256];
	int len;

	UpdateData(TRUE);
	if(m_COM2==false) return;
	memset(buff, 0, sizeof(buff));
	len= m_send1.GetLength();
	wcstombs(buff, m_send1, len);
	len= strlen(buff);
	serwrite(2, buff, len);
	
//--------------- end of add ----------------------
}
//****************************************************************************
void CRS232_DLG::OnPortSend2() 
{
	// TODO: Add your control notification handler code here
//----------------- Demo_01 add -------------------
	char  buff[256];
	int len;

	UpdateData(TRUE);
	if(m_COM3==false) return;
	memset(buff, 0, sizeof(buff));
	len= m_send2.GetLength();
	wcstombs(buff, m_send2, len);
	len= strlen(buff);
	serwrite(3, buff, len);	
//--------------- end of add ----------------------
}
//****************************************************************************

⌨️ 快捷键说明

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