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