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

📄 setcommdlg.cpp

📁 一款基于串口的自动报警系统的程序
💻 CPP
字号:
// CommSettingDlg.cpp : implementation file
//

#include "stdafx.h"
#include "alarm.h"
#include "SetCommDlg.h"
#include "RMain.h"

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


CString GetSetting(CString key, CString ValueName)
{
	CString res;
	DWORD count=100;
	CRMain regKey;
	regKey.Open(HKEY_CURRENT_USER,"Software\\alarm\\"+key);
	regKey.QueryValue(res.GetBuffer(100),ValueName,&count);
	res.ReleaseBuffer();
	regKey.Close();
	return res;
}

void SaveSetting(CString key,CString ValueName,CString value)
{
	CRMain regKey;
	regKey.Create(HKEY_CURRENT_USER,"Software\\alarm\\"+key);
	regKey.Open(HKEY_CURRENT_USER,"Software\\alarm\\"+key);
	regKey.SetValue(value,ValueName);
	regKey.Close();
}

/////////////////////////////////////////////////////////////////////////////
// CSetCommDlg dialog


CSetCommDlg::CSetCommDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSetCommDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetCommDlg)
	m_strChoose = _T("串口1");
	m_strDataBits = _T("8");
	m_strParity = _T("N");
	m_strSpeed = _T("9600");
	m_strStopBits = _T("1");
	//}}AFX_DATA_INIT
	m_dLGuo=0;
}


void CSetCommDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetCommDlg)
	DDX_Text(pDX, IDC_COMMCHOOSE, m_strChoose);
	DDX_CBString(pDX, IDC_DATABITS, m_strDataBits);
	DDX_CBString(pDX, IDC_PARITY, m_strParity);
	DDX_CBString(pDX, IDC_SPEED, m_strSpeed);
	DDX_CBString(pDX, IDC_STOPBITS, m_strStopBits);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetCommDlg, CDialog)
	//{{AFX_MSG_MAP(CSetCommDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetCommDlg message handlers

BOOL CSetCommDlg::OnInitDialog() 
{
	CString commSetting = GetSetting(CString("PortSetting\\Com")+m_strChoose.Right(1)+"\\", "commSetting");
	CString commHandShaking = GetSetting(CString("PortSetting\\Com")+m_strChoose.Right(1)+"\\", "commHandshaking");
	if(commSetting!="" && commHandShaking!="")
	{
		int index1,index2,index3;
		index1=commSetting.Find(',',0);
		index2=commSetting.Find(',',index1+1);
		index3=commSetting.Find(',',index2+1);
		m_strSpeed=commSetting.Left(index1);
		m_strParity=commSetting.Mid(index1+1,index2-index1-1);
		char c=m_strParity.GetAt(0);
		switch(c)
		{
		case 'N':
			m_strParity="None";
			break;
		case 'O':
			m_strParity="Odd";
			break;
		case 'E':
			m_strParity="Even";
			break;
		case 'M':
			m_strParity="Mark";
			break;
		case 'S':
			m_strParity="Space";
			break;
		default:
			m_strParity="None";
			break;
		}
		m_strDataBits=commSetting.Mid(index2+1,index3-index2-1);
		m_strStopBits=commSetting.Mid(index3+1);

		m_dLGuo = atoi(commHandShaking.GetBuffer(10));
	}

	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	((CButton*)GetDlgItem(IDC_RADIO1+m_dLGuo))->SetCheck(1); 
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CSetCommDlg::OnOK() 
{
	// TODO: Add extra validation here
	if (!UpdateData(TRUE))
	{
		TRACE0("UpdateData failed during dialog termination.\n");
		// the UpdateData routine will set focus to correct item
		return;
	}

	m_dLGuo=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO4)-IDC_RADIO1;

	CString commSetting=m_strSpeed+","+m_strParity.Left(1)+","+m_strDataBits+","+m_strStopBits;
	CString commHandShaking;
	itoa(m_dLGuo,commHandShaking.GetBuffer(10),10);
	commHandShaking.ReleaseBuffer();

	SaveSetting(CString("PortSetting\\Com")+m_strChoose.Right(1),"commSetting",commSetting);
	SaveSetting(CString("PortSetting\\Com")+m_strChoose.Right(1),"commHandShaking",commHandShaking);

	EndDialog(IDOK);
}

⌨️ 快捷键说明

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