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