📄 mdlg.cpp
字号:
if(m_kj[22].GetN()) return;
if(errn==0) return;
if(isrun==1)
{
m_errout.Adderr(1,"上一个步骤还未完成");
return;
}
for(int i=2;i<5;i++)
{
if(!m_kj[i].GetN())
{
m_kj[bufi].ChangeN(0);
sbuf.Format("手动阀%d还没有开启",i+1);
m_errout.Adderr(1,sbuf);
return;
}
}
if(!m_kj[21].GetN())
{
sbuf.Format("分油机马达还没有开启",i+1);
m_errout.Adderr(1,sbuf);
return;
}
m_kj[bufi].ChangeN(1);
for(int i=2;i<5;i++)
m_kj[i].SetUse(0);
if(errn==1) prog=err_gl;
else prog=oilpump;
isrun=1;
setp=0;
dlay=0;
m_errout.Adderr(0,"启动油泵");
}
else if(bufi==28)//故障设置
{
if(errn!=-1) m_kj[28].ChangeN(1);
else m_kj[28].ChangeN(0);
for(int i=21;i<26;i++)
{
if(m_kj[i].GetN())
{
m_errout.Adderr(1,"系统已启动不能设置故障");
return;
}
}
//设置故障
CSeterr errset;
errset.issecl=errn;
errset.DoModal();
errn=errset.issecl;
if(errn!=-1) m_kj[28].ChangeN(1);
else m_kj[28].ChangeN(0);
}
else if(bufi==23)// 加热器
{
if(m_kj[23].GetN()) return;
if(errn==0||errn==1) return;
if(isrun==1)
{
m_errout.Adderr(1,"上一个步骤还未完成");
return;
}
for(int i=7;i<9;i++)
{
if(!m_kj[i].GetN())
{
m_kj[bufi].ChangeN(0);
sbuf.Format("手动阀%d还没有开启",i+1);
m_errout.Adderr(1,sbuf);
return;
}
}
if(!m_kj[22].GetN())
{
sbuf.Format("油泵还没有开启",i+1);
m_errout.Adderr(1,sbuf);
return;
}
m_kj[bufi].ChangeN(1);
for(int i=7;i<9;i++)
m_kj[i].SetUse(0);
if(errn==2) prog=err_ht;
else prog=heater;
isrun=1;
setp=0;
dlay=0;
m_errout.Adderr(0,"启动加热器");
}
else if(bufi==21)//分油机
{
if(m_kj[21].GetN()) return;
if(isrun==1)
{
m_errout.Adderr(1,"上一个步骤还未完成");
return;
}
if(errn==0)
{
prog=err_fy;
m_kj[bufi].ChangeN(0);
}
else
{
prog=sep;
m_kj[bufi].ChangeN(1);
}
isrun=1;
setp=0;
dlay=0;
m_errout.Adderr(0,"启动分油机马达");
}
else if(bufi==25) //Discharge
{
if(m_kj[25].GetN()) return;
if(errn>=0&&errn<10) return;
if(isrun==1)
{
m_errout.Adderr(1,"上一个步骤还未完成");
return;
}
if(m_kj[24].GetN())
{
if(m_kj[20].GetN()) //分杂
{
prog=disr2;
}
else
{
switch(errn) {
case 10:
prog=err_psp;
break;
default:prog=disr;
}
}
m_kj[25].ChangeN(1);
isrun=1;
setp=0;
dlay=0;
}
else
{
}
}
else if(bufi==27) //重置
{
for(int i=0;i<3;i++)
{
m_youg[i].reset();
}
m_kj[27].ChangeN(0);
}
else if(bufi==26) //STOP
{
m_errout.Adderr(1,"系统停机!");
isrun=0;
dostop=1;
dlay=0;
setp=0;
for(int i=0;i<10;i++)
m_kj[i].SetUse(1);
for(int i=10;i<20;i++)
m_kj[i].ChangeN(0);
m_kj[20].SetUse(1);
for(int i=21;i<26;i++)
{
m_kj[i].SetUse(1);
m_kj[i].ChangeN(0);
}
m_kj[27].ChangeN(0);
for(int i=0;i<19;i++)
m_dh[i].ChangeN(0);
for(int i=0;i<4;i++)
setshow[i]=0;
for(int i=0;i<3;i++)
{
m_youg[i].SetCanchage(0);
m_youg[i].reset();
}
}
}
CDialog::OnLButtonDown(nFlags, point);
}
//判断坐标点
int CMDLG::chkrect(CPoint point)
{
for(int bufi=0;bufi<29;bufi++)
{
if(bufi<10||bufi>19&&bufi<29)
{
if(m_kj[bufi].ckrect(point)) return bufi;
}
}
return -1;
}
void CMDLG::Drewme(void)
{
// if(!isactive) return;//未激活
CDC *dc=GetDC();
for(int bufi=0;bufi<3;bufi++)
{
str[bufi].Format("%.2fM",(float)show[bufi]/100);
}
str[3].Format("%d℃",show[3]);
UpdateData(FALSE);
for(int bufi=0;bufi<30;bufi++)
m_kj[bufi].Drew(&bitmap[0],dc);
for(int bufi=0;bufi<21;bufi++)
m_dh[bufi].Drew(&bitmap[0],dc);
for(int bufi=0;bufi<3;bufi++)
m_youg[bufi].Drew(&bitmap[0],dc);
m_errout.Drew(&bitmap[0],dc);
ReleaseDC(dc);
}
void CMDLG::chk()
{
int j;
for(int i=0;i<4;i++)
{
if(show[i]<setshow[i]-1)
{
show[i]+=2;
}
else if(show[i]>setshow[i]+2)
{
show[i]-=2;
if(setshow[i]==0&&show[i]<0)
show[i]=0;
}
else
{
j=rand()%3-1;
if(show[i]+j<=setshow[i]+1&&show[i]+j>=setshow[i]-1) show[i]+=j;
}
}
//油柜
if(m_youg[0].shoudreset||m_youg[1].shoudreset||m_youg[2].shoudreset)
{
if(!m_kj[27].GetN())
{
m_errout.Adderr(1,"油柜需要清理");
m_kj[27].ChangeN(1);
}
}
else
{
if(m_dh[2].GetN()&&!m_dh[3].GetN()&&!m_dh[5].GetN()&&!m_youg[0].shoudreset)
m_youg[0].SetCanchage(1);
else m_youg[0].SetCanchage(0);
if(m_dh[9].GetN()&&!m_youg[2].shoudreset)
m_youg[2].SetCanchage(1);
else m_youg[0].SetCanchage(0);
if(m_dh[15].GetN()&&!m_youg[1].shoudreset)
m_youg[1].SetCanchage(1);
else m_youg[1].SetCanchage(0);
}
}
void CMDLG::luoji()
{
int buf;
int kj,dh;
CString strbuf;
if(dlay==0&&isrun==1)
{
buf=prog[setp];
setp++;
while(buf!=0)
{
switch(buf) {
case 1: // 改变某阀、开关的状态
kj=prog[setp];
setp++;
dh=prog[setp];
setp++;
m_kj[kj].ChangeN(dh);
if(kj>9&&kj<19)
{
if(kj>9&&kj<16)
strbuf.Format("阀V%d被",kj-9);
else if(kj==16||kj==17)
strbuf.Format("阀V%d被",kj-7);
else if(kj==18)
strbuf.Format("阀VT被");
dh==1?strbuf+="打开":strbuf+="关闭";
m_errout.Adderr(0,strbuf);
}
break;
case 2: // 改变某箭头状态
kj=prog[setp];
setp++;
dh=prog[setp];
setp++;
m_dh[kj].ChangeN(dh);
break;
case 3: // 延时
kj=prog[setp];
setp++;
dlay=kj;
break;
case 4: // 设置一个开关控件能否使用
kj=prog[setp];
setp++;
dh=prog[setp];
setp++;
m_kj[kj].SetUse(dh);
break;
case -1: // 退出
buf=0;
setp=0;
dlay=0;
isrun=0;
break;
case 5: // 提示
kj=prog[setp];
setp++;
dh=prog[setp];
setp++;
m_errout.Adderr(kj,errmsg[dh]);
break;
case 6: // 数值显示屏
kj=prog[setp];
setp++;
dh=prog[setp];
setp++;
setshow[kj]=dh;
break;
}
if(buf!=0)
{
buf=prog[setp];
setp++;
}
}
}
}
void CMDLG::OnBnClickedA()
{
show[4]<10?show[4]++:show[4];
m_youg[0].ste=-show[4]*10-10;
m_youg[1].ste=show[4]*10;
m_youg[2].ste=show[4]*5;
mjd.SetPos(show[4]);
UpdateData(FALSE);
}
void CMDLG::OnBnClickedJ()
{
show[4]>1?show[4]--:show[4];
m_youg[0].ste=-show[4]*10-10;
m_youg[1].ste=show[4]*10;
m_youg[2].ste=show[4]*5;
mjd.SetPos(show[4]);
UpdateData(FALSE);
}
void CMDLG::showmsg(int sty, int msg)
{
m_errout.Adderr(sty,errmsg[msg]);
}
/*
void CMDLG::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CDialog::OnActivate(nState, pWndOther, bMinimized);
// TODO: 在此处添加消息处理程序代码
if(nState==WA_INACTIVE) isactive=0;
else isactive=1;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -