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

📄 setsv.cpp

📁 这是一个水箱的液位控制程序
💻 CPP
字号:
// setsv.cpp : implementation file//#include "stdafx.h"#include "水箱实验.h"#include "setsv.h"#include "conio.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// Csetsv dialogCsetsv::Csetsv(CWnd* pParent /*=NULL*/)	: CDialog(Csetsv::IDD, pParent){	base=0x0100;	//{{AFX_DATA_INIT(Csetsv)	m_peroutput1 = _T("");	m_peroutput2 = _T("");	m_getsetsv1 = 0;	m_getsetsv2 = 0;	//}}AFX_DATA_INIT}void Csetsv::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(Csetsv)	DDX_Control(pDX, IDC_GETSETSV2, m_getsetsv2edit);	DDX_Control(pDX, IDC_GETSETSV1, m_getsetsv1edit);	DDX_Text(pDX, IDC_PEROUTPUT1, m_peroutput1);	DDX_Text(pDX, IDC_PEROUTPUT2, m_peroutput2);	DDX_Text(pDX, IDC_GETSETSV1, m_getsetsv1);	DDX_Text(pDX, IDC_GETSETSV2, m_getsetsv2);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(Csetsv, CDialog)	//{{AFX_MSG_MAP(Csetsv)	ON_EN_CHANGE(IDC_GETSETSV1, OnChangeGetsetsv1)	ON_EN_CHANGE(IDC_GETSETSV2, OnChangeGetsetsv2)	ON_WM_PAINT()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// Csetsv message handlersBOOL Csetsv::OnInitDialog() {	CDialog::OnInitDialog();		// TODO: Add extra initialization here	if(aorm)		m_getsetsv1edit.LimitText(4);	else		m_getsetsv1edit.LimitText(5);	if(aorm2)		m_getsetsv2edit.LimitText(4);	else		m_getsetsv2edit.LimitText(5);		int m_percent1=GetDlgItemInt(IDC_GETSETSV1);	int m_percent2=GetDlgItemInt(IDC_GETSETSV2);    //data=float(m_percent*16.0/100+4);控制量	if(aorm==1 && !(aorm2==2))		persv1=float(m_percent1-1000)/40;	if(aorm==0 && !(aorm2==2))		persv1=float(m_percent1-4000)/160;		if(aorm2==1 && !(aorm==2))		persv2=float(m_percent2-1000)/40;	if(aorm2==0 && !(aorm==2))		persv2=float(m_percent2-4000)/160;	//int number=GetDlgItemInt(IDC_EDIT2,NULL,TRUE);    //SetData(number,data);		m_peroutput1.Format("%4.2f",persv1);	m_peroutput1+="%";	m_peroutput2.Format("%4.1f",persv2);	m_peroutput2+="%";	SetDlgItemText(IDC_PEROUTPUT1,m_peroutput1);	SetDlgItemText(IDC_PEROUTPUT2,m_peroutput2);	return TRUE;  // return TRUE unless you set the focus to a control	              // EXCEPTION: OCX Property Pages should return FALSE}void Csetsv::OnChangeGetsetsv1() {	// TODO: If this is a RICHEDIT control, the control will not	// send this notification unless you override the CDialog::OnInitDialog()	// function and call CRichEditCtrl().SetEventMask()	// with the ENM_CHANGE flag ORed into the mask.		// TODO: Add your control notification handler code here	int m_percent1=GetDlgItemInt(IDC_GETSETSV1);	if(aorm==1 && !(aorm2==2))		persv1=float(m_percent1-1000)/40;	if(aorm==0 && !(aorm2==2))		persv1=float(m_percent1-4000)/160;	m_peroutput1.Format("%4.2f",persv1);	m_peroutput1+="%";	SetDlgItemText(IDC_PEROUTPUT1,m_peroutput1);}void Csetsv::OnOK() {	// TODO: Add extra validation here	//SetData(number,data);	int m_percent1=GetDlgItemInt(IDC_GETSETSV1);	data1=float(m_percent1/1000);	SetData1(data1);	int m_percent2=GetDlgItemInt(IDC_GETSETSV2);	data2=float(m_percent2/1000);	SetData2(data2);	CDialog::OnOK();}float Csetsv::SetData1(float data1){	unsigned int datapv,temp,temp1,temp2;    int dah,dal;	int number=1;	float a;	a=(float)4095*16.0/4096+4;	if(data1>=a)		data1=a;	datapv=(int)((data1-4)*4096/16);	temp1=temp2=datapv;	temp=0xff;	dah=temp1>>4;	temp2=temp2<<4;	temp2=temp2&temp;	dal=temp2;  	_outp(base+2*number+2,dah);	_outp(base+2*number+3,dal);	_inp(base+0);  	return(data1);}float Csetsv::SetData2(float data2){	unsigned int datapv,temp,temp1,temp2;    int dah,dal;	int number=2;	float a;	a=(float)4095*16.0/4096+4;	if(data2>=a)		data2=a;	datapv=(int)((data2-4)*4096/16);	temp1=temp2=datapv;	temp=0xff;	dah=temp1>>4;	temp2=temp2<<4;	temp2=temp2&temp;	dal=temp2;  	_outp(base+2*number+2,dah);	_outp(base+2*number+3,dal);	_inp(base+0);  	return(data2);}void Csetsv::OnChangeGetsetsv2() {	// TODO: If this is a RICHEDIT control, the control will not	// send this notification unless you override the CDialog::OnInitDialog()	// function and call CRichEditCtrl().SetEventMask()	// with the ENM_CHANGE flag ORed into the mask.		// TODO: Add your control notification handler code here	int m_percent2=GetDlgItemInt(IDC_GETSETSV2);	if(aorm2==1 && !(aorm==2))		persv2=float(m_percent2-1000)/40;	if(aorm2==0 && !(aorm==2))		persv2=float(m_percent2-4000)/160;	m_peroutput2.Format("%4.2f",persv2);	m_peroutput2+="%";	SetDlgItemText(IDC_PEROUTPUT2,m_peroutput2);	}void Csetsv::OnPaint() {	CPaintDC dc(this); // device context for painting		// TODO: Add your message handler code here	HWND edit;	GetDlgItem(IDC_GETSETSV1,&edit);	::SetFocus(edit);		// Do not call CDialog::OnPaint() for painting messages}

⌨️ 快捷键说明

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