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

📄 config.cpp

📁 串口通讯,采用异步方式,采用回调上传数据
💻 CPP
字号:
// Config.cpp : implementation file
//

#include "stdafx.h"
#include "ComTest.h"
#include "Config.h"
//#include "SerialPort.h"

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

/////////////////////////////////////////////////////////////////////////////
// CConfig dialog

//extern CSerialPort*	m_Ports[4];
extern _PortInfo PortInfo[4];



CConfig::CConfig(CWnd* pParent,int id): CDialog(CConfig::IDD, pParent)
{
	//{{AFX_DATA_INIT(CConfig)
	//}}AFX_DATA_INIT
	uid=id;
	m_ReciveFile=PortInfo[uid].stReciveFileName;
	m_ReadFile=PortInfo[uid].stSendFileName ;
	m_time = PortInfo[uid].nUseTime;


}
void CConfig::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CConfig)
	DDX_Text(pDX, IDC_WRITEFILENAME, m_ReciveFile);
	DDX_Text(pDX, IDC_READFILENAME, m_ReadFile);
	DDX_Text(pDX, IDC_EDIT_TIME, m_time);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CConfig, CDialog)
	//{{AFX_MSG_MAP(CConfig)
	ON_BN_CLICKED(IDC_WRITEFILE, OnWritefile)
	ON_BN_CLICKED(IDC_READFILE, OnReadfile)
	ON_BN_CLICKED(IDC_GETREADFILE, OnGetreadfile)
	ON_BN_CLICKED(IDC_INPUTTYPE1, OnInputtype1)
	ON_BN_CLICKED(IDC_INPUTTYPE2, OnInputtype2)
	ON_BN_CLICKED(IDC_OUTPUTTYPE1, OnOutputtype1)
	ON_BN_CLICKED(IDC_OUTPUTTYPE2, OnOutputtype2)
	ON_BN_CLICKED(IDC_SENDLINE, OnSendline)
	ON_EN_KILLFOCUS(IDC_WRITEFILENAME, OnKillfocusWritefilename)
	ON_BN_CLICKED(IDC_GETWRITEFILE, OnGetwritefile)
	ON_BN_CLICKED(IDC_INCLUDN, OnIncludn)
	ON_BN_CLICKED(IDC_CKC_TIME, OnCkcTime)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConfig message handlers

BOOL CConfig::OnInitDialog() 
{
	CDialog::OnInitDialog();
	SetDlgItemInt(IDC_SENDBUFFERCOMBO, PortInfo[uid].nBufferSize);
	DWORD dwCommEvents = PortInfo[uid].dwCommEvents;
	((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck((dwCommEvents & EV_BREAK) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck((dwCommEvents & EV_CTS) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck((dwCommEvents & EV_DSR) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck((dwCommEvents & EV_ERR) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck((dwCommEvents & EV_RING) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck((dwCommEvents & EV_RLSD) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck((dwCommEvents & EV_RXCHAR) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK8))->SetCheck((dwCommEvents & EV_RXFLAG) > 0 ? TRUE : FALSE);
	((CButton*)GetDlgItem(IDC_CHECK9))->SetCheck((dwCommEvents & EV_TXEMPTY) > 0 ? TRUE : FALSE);

	char strTemp[128];
	((CComboBox*)GetDlgItem(IDC_BAUDRATECOMBO))->SelectString(0, itoa(PortInfo[uid].Baud,strTemp,10));

	int t=0;
	switch(PortInfo[uid].Parity){
	case 'N':t=0;break;
	case 'O':t=1;break;
	case 'E':t=2;break;
	case 'M':t=3;break;
	case 'S':t=4;break;
	}
	((CComboBox*)GetDlgItem(IDC_PARITYCOMBO))->SetCurSel(t);

	//((CComboBox*)GetDlgItem(IDC_STOPBITSCOMBO))->SetCurSel(1);
	GetDlgItem(IDC_STOPBITSCOMBO)->SetWindowText(PortInfo[uid].StopsBits);

	((CComboBox*)GetDlgItem(IDC_DATABITSCOMBO))->SelectString(0, itoa(PortInfo[uid].DataBits,strTemp,10));

	iReciveType=PortInfo[uid].iReciveType;
	iSendType=PortInfo[uid].iSendType;
	((CButton*)GetDlgItem(IDC_INPUTTYPE1+iReciveType))->SetCheck(1);
	((CButton*)GetDlgItem(IDC_OUTPUTTYPE1+iSendType))->SetCheck(1);
	((CButton*)GetDlgItem(IDC_WRITEFILE))->SetCheck(PortInfo[uid].bReciveFile );
	((CButton*)GetDlgItem(IDC_READFILE))->SetCheck(PortInfo[uid].bSendFile);
	GetDlgItem(IDC_WRITEFILENAME)->EnableWindow(PortInfo[uid].bReciveFile);
	GetDlgItem(IDC_READFILENAME)->EnableWindow(PortInfo[uid].bSendFile);
//	GetDlgItem(IDC_SENDLINE)->EnableWindow(PortInfo[uid].bSendFile);
	GetDlgItem(IDC_GETREADFILE)->EnableWindow(PortInfo[uid].bSendFile);
	((CButton*)GetDlgItem(IDC_SENDLINE))->SetCheck(PortInfo[uid].bSendLine );
//	((CButton*)GetDlgItem(IDC_INCLUDN))->SetCheck(PortInfo[uid].bHaveCR  );

	BOOL sb=PortInfo[uid].nUseTime!= 0 ? TRUE : FALSE;
	((CButton*)GetDlgItem(IDC_CKC_TIME))->SetCheck(sb);
	GetDlgItem(IDC_EDIT_TIME)->EnableWindow(sb);

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CConfig::OnOK() 
{
	UpdateData();
	DWORD dwCommEvents = 0;
	if(((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck()) dwCommEvents |= EV_BREAK;
	if(((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck()) dwCommEvents |= EV_CTS;
	if(((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck()) dwCommEvents |= EV_DSR;
	if(((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck()) dwCommEvents |= EV_ERR;
	if(((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck()) dwCommEvents |= EV_RING;
	if(((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck()) dwCommEvents |= EV_RLSD;
	if(((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck()) dwCommEvents |= EV_RXCHAR;
	if(((CButton*)GetDlgItem(IDC_CHECK8))->GetCheck()) dwCommEvents |= EV_RXFLAG;
	if(((CButton*)GetDlgItem(IDC_CHECK9))->GetCheck()) dwCommEvents |= EV_TXEMPTY;
	PortInfo[uid].dwCommEvents =dwCommEvents;//事件

	char buf[25];
	GetDlgItemText(IDC_PARITYCOMBO,buf,25);
	PortInfo[uid].Parity=buf[0];

	PortInfo[uid].Baud=GetDlgItemInt(IDC_BAUDRATECOMBO);
	PortInfo[uid].DataBits=GetDlgItemInt(IDC_DATABITSCOMBO);

	GetDlgItemText(IDC_STOPBITSCOMBO,buf,25);
	strcpy(PortInfo[uid].StopsBits,buf);
	//=GetDlgItemInt(IDC_STOPBITSCOMBO);
		
	//	=((CComboBox*)(GetDlgItem(IDC_STOPBITSCOMBO)))->GetCurSel();

	PortInfo[uid].nBufferSize=GetDlgItemInt(IDC_SENDBUFFERCOMBO);

	PortInfo[uid].iReciveType=iReciveType;
	PortInfo[uid].iSendType=iSendType;
	PortInfo[uid].bReciveFile =((CButton*)GetDlgItem(IDC_WRITEFILE))->GetCheck();
	PortInfo[uid].bSendFile =((CButton*)GetDlgItem(IDC_READFILE))->GetCheck();
	PortInfo[uid].stReciveFileName =m_ReciveFile;
	PortInfo[uid].stSendFileName =m_ReadFile;
	PortInfo[uid].bSendLine=((CButton*)GetDlgItem(IDC_SENDLINE))->GetCheck();

	BOOL sb=((CButton*)GetDlgItem(IDC_CKC_TIME))->GetCheck();
	if(sb)	PortInfo[uid].nUseTime=m_time ;
	else	PortInfo[uid].nUseTime=0 ;

	CDialog::OnOK();
}


void CConfig::OnWritefile() 
{
	BOOL sb=((CButton*)GetDlgItem(IDC_WRITEFILE))->GetCheck();
	GetDlgItem(IDC_WRITEFILENAME)->EnableWindow(sb);
	GetDlgItem(IDC_GETWRITEFILE)->EnableWindow(sb);
}

void CConfig::OnReadfile() 
{
	BOOL sb=((CButton*)GetDlgItem(IDC_READFILE))->GetCheck();
	GetDlgItem(IDC_READFILENAME)->EnableWindow(sb);
//	GetDlgItem(IDC_SENDLINE)->EnableWindow(sb);
	GetDlgItem(IDC_GETREADFILE)->EnableWindow(sb);
//	GetDlgItem(IDC_INCLUDN)->EnableWindow(sb);
}

void CConfig::OnGetreadfile() 
{
	char buf[256];
	GetCurrentDirectory(256,buf);
	strcat(buf,"\\*.txt");
	CFileDialog f(TRUE,"txt",buf,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"打开文本文件 (*.txt)|*.txt");
	if(f.DoModal()!=IDOK) return;
	m_ReadFile =f.GetPathName();
	UpdateData(FALSE);
}

void CConfig::OnInputtype1() 
{
	iReciveType	=0;
}

void CConfig::OnInputtype2() 
{
	iReciveType	=1;
}

void CConfig::OnOutputtype1() 
{
	iSendType=0;
}

void CConfig::OnOutputtype2() 
{
	iSendType=1;
}

void CConfig::OnSendline() 
{
	PortInfo[uid].bSendLine =((CButton*)GetDlgItem(IDC_SENDLINE))->GetCheck();
}
void CConfig::OnIncludn() 
{
	PortInfo[uid].bHaveCR  =((CButton*)GetDlgItem(IDC_INCLUDN))->GetCheck();
}

void CConfig::OnKillfocusWritefilename() 
{
	UpdateData();
}

void CConfig::OnGetwritefile() 
{
	char buf[256];
	GetCurrentDirectory(256,buf);
	strcat(buf,"\\*.txt");
	CFileDialog f(FALSE,"txt",buf,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"保存文本文件 (*.txt)|*.txt");
	if(f.DoModal()!=IDOK) return;
	m_ReciveFile =f.GetPathName();
	UpdateData(FALSE);

}

void CConfig::OnCkcTime() 
{
	BOOL sb=((CButton*)GetDlgItem(IDC_CKC_TIME))->GetCheck();
	GetDlgItem(IDC_EDIT_TIME)->EnableWindow(sb);
}

⌨️ 快捷键说明

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