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

📄 setdlg.cpp

📁 我的毕业设计---高级宾馆门禁系统 VC数据库+串口 从串口接收
💻 CPP
字号:
// SETDLG.cpp : implementation file
//

#include "stdafx.h"
#include "hotel_mis.h"
#include "SETDLG.h"

#include "Hotel_MISDoc.h"
#include "Hotel_MISView.h"
#include "mscomm.h"//6.5 号调试串口设置添加

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

extern 	int m_nBaud;       //波特率
extern 	int m_nCom;         //串口号
extern 	char m_cParity;    //校验
extern 	int m_nDatabits;    //数据位
extern 	int m_nStopbits;    //停止位
//extern  CMSComm m_MSComm;

/////////////////////////////////////////////////////////////////////////////
// CSETDLG dialog


CSETDLG::CSETDLG(CWnd* pParent /*=NULL*/)
	: CDialog(CSETDLG::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSETDLG)
	
	//}}AFX_DATA_INIT
}


void CSETDLG::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSETDLG)
	DDX_Control(pDX, IDC_COMBO_DATABITS, m_DataBits);
	DDX_Control(pDX, IDC_COMBO_STOPBITS, m_StopBits);
	DDX_Control(pDX, IDC_COMBO_SPEED, m_Speed);
	DDX_Control(pDX, IDC_COMBO_PARITY, m_Parity);
	DDX_Control(pDX, IDC_COMBO_COMSELECT, m_Com);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSETDLG, CDialog)
	//{{AFX_MSG_MAP(CSETDLG)
	ON_BN_CLICKED(IDC_TEST, OnTest)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSETDLG message handlers

void CSETDLG::OnTest() 
{
	// TODO: Add your control notification handler code here
	/*CString m_send="08 88 04 01 01 00 01 02 03 04 00 00 00 00 08";
	CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd(); 
	CHotel_MISView* ptView =(CHotel_MISView*) pMain->GetActiveView(); 
	发送检验字节
*/
	((CComboBox*)GetDlgItem(IDC_COMNO))->SetCurSel(0);
}

BOOL CSETDLG::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
 	m_Com.SetCurSel(0);
	m_Speed.SetCurSel(5);
	m_Parity.SetCurSel(0);
	m_DataBits.SetCurSel(0);
	m_StopBits.SetCurSel(0); 
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}



void CSETDLG::OnOK() 
{
	// TODO: Add extra validation here
	CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd(); 
	CHotel_MISView* ptView =(CHotel_MISView*) pMain->GetActiveView(); 
//	CHotel_MISDoc* pDoc = (CHotel_MISDoc*)pMain->GetActiveDocument();

//选择COM
m_nCom=m_Com.GetCurSel()+1;

//波特率
	int i=m_Speed.GetCurSel();
	switch(i)
	{
	case 0:
		i=300;
		break;
	case 1:
		i=600;
		break;
	case 2:
		i=1200;
		break;
	case 3:
		i=2400;
		break;
	case 4:
		i=4800;
		break;
	case 5:
		i=9600;
		break;
	case 6:
		i=19200;
		break;
	case 7:
		i=38400;
		break;
	case 8:
		i=43000;
		break;
	case 9:
		i=56000;
		break;
	case 10:
		i=57600;
		break;
	case 11:
		i=115200;
		break;
	default:
		break;

	}
	m_nBaud=i;
//校验位
	char temp;
	i=m_Parity.GetCurSel();
	switch(i)
	{
	case 0:
		temp='N';
		break;
	case 1:
		temp='O';
		break;
	case 2:
		temp='E';
		break;
	}
	m_cParity=temp;
//数据位
	i=m_DataBits.GetCurSel();
	switch(i)
	{
	case 0:
		i=8;
		break;
	case 1:
		i=7;
		break;
	case 2:
		i=6;
		break;
	}
	m_nDatabits=i;
//停止位
	i=m_StopBits.GetCurSel();
	switch(i)
	{
	case 0:
		i=1;
		break;
	case 1:
		i=2;
		break;
	}
	m_nStopbits=i;

	if(ptView->m_MSComm.GetPortOpen()) //如果串口是打开的,则行关闭串口
	ptView->m_MSComm.SetPortOpen(FALSE);

	ptView->m_MSComm.SetCommPort(m_nCom); 
	ptView->m_MSComm.SetInBufferSize(1024); //接收缓冲区
	ptView->m_MSComm.SetOutBufferSize(1024);//发送缓冲区
	ptView->m_MSComm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取
	ptView->m_MSComm.SetInputMode(1);//以二进制方式读写数据
	ptView->m_MSComm.SetRThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm事件
	CString str;
	str.Format("%d,%c,%d,%d",m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
	ptView->m_MSComm.SetSettings(str);//波特率9600无检验位,8个数据位,1个停止位
	//ptView->m_MSComm.SetSettings("9600,n,8,1");//波特率9600无检验位,8个数据位,1个停止位

	if(!ptView->m_MSComm.GetPortOpen())//如果串口没有打开则打开
	ptView->m_MSComm.SetPortOpen(TRUE);//打开串口
	else
	AfxMessageBox("Open Serial Port Failure!");
	ptView->m_MSComm.GetInput(); //先预读缓冲区以清除残留数据

	CDialog::OnOK();
}

//DEL CSETDLG::CSETDLG(CHotel_MISView *pView)
//DEL {
//DEL 	m_pView = pView; 
//DEL }

⌨️ 快捷键说明

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