📄 etcdialog.cpp
字号:
// EtcDialog.cpp : implementation file
//
#include "stdafx.h"
#include "dvp.h"
#include "EtcDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEtcDialog dialog
CEtcDialog::CEtcDialog(CWnd* pParent /*=NULL*/)
: CDialog(CEtcDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CEtcDialog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CEtcDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEtcDialog)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEtcDialog, CDialog)
//{{AFX_MSG_MAP(CEtcDialog)
ON_BN_CLICKED(IDC_INT1_GET, OnInt1Get)
ON_BN_CLICKED(IDC_INT1_SET, OnInt1Set)
ON_BN_CLICKED(IDC_INT2_GET, OnInt2Get)
ON_BN_CLICKED(IDC_INT2_SET, OnInt2Set)
ON_BN_CLICKED(IDC_BUZZ_SET, OnBuzzSet)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEtcDialog message handlers
void CEtcDialog::OnCancel()
{
CDialog::OnCancel();
}
BOOL CEtcDialog::OnInitDialog()
{
CDialog::OnInitDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
};
//处理命令
bool CEtcDialog::DealCmd(const unsigned char * cmd)
{
unsigned char data = cmd[3];
unsigned char dev = cmd[2];
CButton * ck = NULL;
if(dev == 0x02) //中断1设备号为2
{
ck = (CButton *)this->GetDlgItem(IDC_INT1_CHECK);
}
if(dev == 0x03)//中断2设备号为3
{
ck = (CButton *)this->GetDlgItem(IDC_INT2_CHECK);
}
if(ck != NULL) //得到中断状态后显示
{
if(data == 1)
ck->SetCheck(true);
else
ck->SetCheck(false);
}
return true;
}
//设置中断,dev为设备号:1为中断1,2为中断2
int CEtcDialog::SetInt(unsigned char dev , bool enabled)
{
unsigned char buf[] = {0x08,0x04,0x81,0x00,0x00,0x00,0x09};
if(dev != 0x03 && dev != 0x02)
return 0;
buf[3] = dev;
if(enabled)
buf[4] = 0x01;
buf[5] = MakeVerify(&buf[1] , 4);
return DvpView->SendData(buf , 7);
}
//得到中断的状态
int CEtcDialog::GetInt(unsigned char dev)
{
unsigned char buf[] = {0x08,0x03,0x82,0x05,0x00,0x09};
if(dev != 0x03 && dev != 0x02)
return 0;
buf[3] = dev;
buf[4] = MakeVerify(&buf[1] , 3);
return DvpView->SendData(buf , 6);
}
//设置蜂鸣器,num为响几次
int CEtcDialog::SetBuzz(unsigned char num)
{
unsigned char buf[] = {0x08,0x04,0x81,0x07,0x00,0x00,0x09};//设备号为7
if(num > 10)//最多响10次
return 0;
buf[4] = num;
buf[5] = MakeVerify(&buf[1] , 4);
return DvpView->SendData(buf , 7);
}
//响应得到中断1的状态事件
void CEtcDialog::OnInt1Get()
{
GetInt(0x02);
}
//响应设置中断1的状态事件
void CEtcDialog::OnInt1Set()
{
bool enabled = false;
CButton * ck = NULL;
ck = (CButton *)this->GetDlgItem(IDC_INT1_CHECK);
if(ck->GetCheck())
enabled = true;
SetInt(0x02 , enabled);
}
//响应得到中断2的状态事件
void CEtcDialog::OnInt2Get()
{
GetInt(0x03);
}
//响应中断2的设置事件
void CEtcDialog::OnInt2Set()
{
bool enabled = false;
CButton * ck = NULL;
ck = (CButton *)this->GetDlgItem(IDC_INT2_CHECK);
if(ck->GetCheck())
enabled = true;
SetInt(0x03 , enabled);
}
//响应蜂鸣器设置事件
void CEtcDialog::OnBuzzSet()
{
unsigned char num = 255;
CEdit * edit = (CEdit *)this->GetDlgItem(IDC_NUM_EDIT);
CString str;
edit->GetWindowText(str);
num = atoi(str.GetBuffer(0));
SetBuzz(num);
};
void CEtcDialog::OnClose()
{
CDialog::OnClose();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -