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

📄 dlgcommset.cpp

📁 windows mobile ppc5.0 mfc 编制的串口测试程序
💻 CPP
字号:
// DlgCommSet.cpp : 实现文件
//

#include "stdafx.h"
#include "YsfTTY.h"
#include "DlgCommSet.h"
#include <aygshell.h>
#include <strsafe.h>

#define MAX_BUFFER_LEN 80
// Returns number of elements
#define dim(x) (sizeof(x) / sizeof(x[0]))

DWORD dwBaudRates[] = {4800, 9600, 19200, 38400,57600, 115200};  // List of baud
// CDlgCommSet 对话框

IMPLEMENT_DYNAMIC(CDlgCommSet, CDialog)

CDlgCommSet::CDlgCommSet(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgCommSet::IDD, pParent)
	, m_nComm(0)
	, m_nBaut(1)
	, m_nParity(0)
	, m_nDataLen(0)
	, m_nStopBits(0)
	, m_nShake(0)
{

}

CDlgCommSet::~CDlgCommSet()
{
}

void CDlgCommSet::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_CBIndex(pDX, IDC_CBOCOMM, m_nComm);
	DDX_CBIndex(pDX, IDC_CBOBAUT, m_nBaut);
	DDX_CBIndex(pDX, IDC_CBOCHECK, m_nParity);
	DDX_CBIndex(pDX, IDC_CBODATA, m_nDataLen);
	DDX_CBIndex(pDX, IDC_CBOSTOP, m_nStopBits);
	DDX_CBIndex(pDX, IDC_CBOSHAKE, m_nShake);
}


BEGIN_MESSAGE_MAP(CDlgCommSet, CDialog)
	ON_BN_CLICKED(IDOK, &CDlgCommSet::OnBnClickedOk)
END_MESSAGE_MAP()


// CDlgCommSet 消息处理程序

BOOL CDlgCommSet::OnInitDialog()
{
	CDialog::OnInitDialog();
	TCHAR tszTmp[MAX_BUFFER_LEN];
	// TODO:  在此添加额外的初始化
	//串行口
	CString str;

	CComboBox* pcboComm;
	pcboComm = (CComboBox*)this->GetDlgItem(IDC_CBOCOMM);
	for(int i = 0; i < 9; i++)
	{
		str.Format(TEXT("COM%d"),i+1);
		pcboComm->AddString(str);
	}
	pcboComm->SetCurSel(this->m_nComm);

	//baud
	CComboBox* pcboBaud;
	pcboBaud = (CComboBox*)this->GetDlgItem(IDC_CBOBAUT);
	for(int i = 0;i < dim(dwBaudRates);i++)
	{
		::StringCchPrintf(tszTmp,dim(tszTmp),TEXT("%d"),dwBaudRates[i]);
		pcboBaud->AddString(tszTmp);
	}
	pcboBaud->SetCurSel(this->m_nBaut);//9600
	//parity
	CComboBox* pcboParity;
	pcboParity = (CComboBox*)this->GetDlgItem(IDC_CBOCHECK);
	pcboParity->AddString(TEXT("无"));
	pcboParity->AddString(TEXT("奇"));
	pcboParity->AddString(TEXT("偶"));
	pcboParity->SetCurSel(this->m_nParity);
	//数据位
	CComboBox* pcboDataBits;
	pcboDataBits = (CComboBox*)this->GetDlgItem(IDC_CBODATA);
	pcboDataBits->AddString(TEXT("8"));
	pcboDataBits->SetCurSel(this->m_nDataLen);

	//stopbits
	CComboBox* pcboStopBits;
	pcboStopBits = (CComboBox*)this->GetDlgItem(IDC_CBOSTOP);
	pcboStopBits->AddString(TEXT("1"));
	pcboStopBits->AddString(TEXT("1.5"));
	pcboStopBits->AddString(TEXT("2"));
	pcboStopBits->SetCurSel(this->m_nStopBits);
	
	//shakehand
	CComboBox* pcboShakehand;
	pcboShakehand = (CComboBox*)this->GetDlgItem(IDC_CBOSHAKE);
	pcboShakehand->AddString(TEXT("None"));
	pcboShakehand->AddString(TEXT("RTS/CTS"));
	pcboShakehand->AddString(TEXT("XON/XOFF"));
	pcboShakehand->SetCurSel(this->m_nShake);

	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}

void CDlgCommSet::init(int nComm, int nBaut, int nParity, int nDataBits, 
					   int nStopBits, int nShakeHand)
{
	this->m_nComm = nComm;
	this->m_nBaut = nBaut;
	this->m_nParity = nParity;
	this->m_nDataLen = nDataBits;
	this->m_nStopBits = nStopBits;
	this->m_nShake = nShakeHand;
}

void CDlgCommSet::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	this->UpdateData(TRUE);
	OnOK();
}

void CDlgCommSet::GetConfig(int& nComm, int& nBaut, int& nParity, 
							int& nDataBits, int& nStopBits, int& nShakeHand)
{
	nComm = this->m_nComm;
	nBaut = this->m_nBaut;
	nParity = this->m_nParity;
	nDataBits = this->m_nDataLen;
	nStopBits = this->m_nStopBits;
	nShakeHand = this->m_nShake;
}

⌨️ 快捷键说明

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