?? 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 + -