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

📄 etcdialog.cpp

📁 郎顿51开发板上位机代码 帮助你快速开发工控程序
💻 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 + -