#include "stdafx.h"
#include "auto.h"
#include "MyWin2.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
CMyWin2::CMyWin2()
{
InitData();
}
CMyWin2::~CMyWin2()
{
// KillTimer(2);
}
BEGIN_MESSAGE_MAP(CMyWin2, CWnd)
//{{AFX_MSG_MAP(CMyWin2)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_TIMER()
ON_BN_CLICKED(3001, SetP)
ON_BN_CLICKED(3002, SetT)
ON_BN_CLICKED(3003, SetPID)
ON_MESSAGE(MSG_OP,ShowInfo)
ON_MESSAGE(CHANGEITEM ,SetLineAct)
ON_MESSAGE(LINESCALE,SetLineScale)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
BOOL CMyWin2::Create(int sx,int sy,int width, int height, CWnd *pParent, UINT nID)
{
CString szClassName = AfxRegisterWndClass(0x843,0,0,0);
CRect rect(sx,sy,sx+width,sy+height);
if(!CWnd::CreateEx(0,szClassName,_T(""),WS_CHILD,rect,pParent,nID))
return FALSE;
UpdateWindow();
return TRUE;
}
int CMyWin2::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
int i;
//阀门
for(i=0;i<11;i++)
V[i].Create(100+75*i,530,this,4001+i);
V[0].Set_IO(4,1,6,1,32,1);
V[1].Set_IO(4,0,6,0,32,0);
V[2].Set_IO(4,3,6,3,32,3);
V[3].Set_IO(4,4,6,4,32,4);
V[4].Set_IO(4,5,6,5,32,5);
V[5].Set_IO(4,6,6,6,32,6);
V[6].Set_IO(5,0,7,0,33,0);
V[7].Set_IO(5,1,7,1,33,1);
V[8].Set_IO(5,2,7,2,33,2);
V[9].Set_IO(5,3,7,3,33,3);
V[10].Set_IO(5,5,7,5,33,5);
//调节阀
for(i=0;i<6;i++)
{
AS[i].Create(1180,70+108*i,this,4101+i);
AS[i].Set_IO(8,i,36+i*4);
}
//泵
for(i=0;i<8;i++)
{
P[i].Create(1400,50+80*i,this,4201+i);
P[i].Set_IO(26,i,27,i,30,i);
}
//曲线
CL.Create(100,80,800,400,this,4300);
mSelect.Create(960,85,this,4600);
Ind1.Create(IDD_PLIMIT,this);
Ind2.Create(IDD_TEMP,this);
Ind3.Create(IDD_PID,this);
bSet1.Create("压力限制设置",WS_VISIBLE|WS_TABSTOP,CRect(950,540,1100,570),this,3001);
bSet2.Create("换热数据设置",WS_VISIBLE|WS_TABSTOP,CRect(950,580,1100,610),this,3002);
bSet3.Create("PID调节面板",WS_VISIBLE|WS_TABSTOP,CRect(950,620,1100,650),this,3003);
SetTimer(2,500,NULL);
return 0;
}
void CMyWin2::OnPaint()
{
CPaintDC dc(this);
CDC *pDC=GetDC();
CDC mDC;
CBitmap BMP;
CRect rect;
GetClientRect(&rect);
mDC.CreateCompatibleDC(pDC);
BMP.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
mDC.SelectObject(&BMP);
OnDraw(&mDC);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&mDC,0,0,SRCCOPY);
ReleaseDC(pDC);
}
void CMyWin2::OnDraw(CDC *pDC)
{
CString str;
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(&rect,RGB(200,200,120));
CFont vFont,pFont,*oFont;
vFont.CreateFont(20,10,0,0,900,0,0,0,0,0,0,0,0,"黑体");
pFont.CreateFont(30,10,0,0,900,0,0,0,0,0,0,0,0,"黑体");
pDC->SetBkMode(0);
pDC->SetTextColor(RGB(0,0,0));
//阀门标签
oFont=pDC->SelectObject(&vFont);
for(int x=0;x<11;x++)
{
pDC->FillSolidRect(CRect(100+x*75,610,150+x*75,820),RGB(150,150,100));
pDC->DrawText(vName[x],CRect(100+x*75,620,150+x*75,820),DT_CENTER|DT_VCENTER);
}
//泵标签
pDC->SelectObject(&pFont);
for(int y=0;y<8;y++)
{
pDC->FillSolidRect(CRect(1505,50+y*80,1650,100+y*80),RGB(150,150,100));
pDC->DrawText(pName[y],CRect(1515,60+y*80,1650,110+y*80),DT_LEFT|DT_VCENTER);
}
//模拟输出签
for(int z=0;z<6;z++)
pDC->DrawText(asName[z],CRect(1130,40+z*108,1380,70+z*108),DT_CENTER|DT_VCENTER);
//操作信息
pDC->FillSolidRect(CRect(950,700,1650,800),RGB(0,0,0));
pDC->SetTextColor(RGB(255,0,0));
pDC->DrawText(opStr,CRect(1000,720,1600,780),DT_LEFT|DT_VCENTER);
pDC->SetTextColor(0);
pDC->SelectObject(oFont);
//当前跟踪信息
float vc1=GetReal(60)-GetReal(64);
float vc2=GetReal(68)-GetReal(72);
float vc3=GetReal(76)-GetReal(80);
str.Format("XXXXXXX进出差压: %3.2f MPa XXXXXXX进出差压: %3.2f MPa XXXXXXX进出差压: %3.2f MPa",vc1,vc2,vc3);
pDC->DrawText(str,CRect(100,50,900,80),DT_CENTER|DT_VCENTER);
//模曲线坐标
pDC->MoveTo(100,50);
pDC->LineTo(100,480);
pDC->LineTo(900,480);
pDC->LineTo(900,50);
pDC->MoveTo(100,80);
pDC->LineTo(900,80);
int yp;
for(int v=0;v<=100/LineSC;v++)
{
yp=v*4*LineSC;
if(v%10)
pDC->MoveTo(90,480-yp);
else
{
pDC->MoveTo(80,480-yp);
str.Format("%d",v);
pDC->DrawText(str,CRect(50,480-yp-10,80,480-yp+10),DT_RIGHT|DT_VCENTER);
}
pDC->LineTo(100,480-yp);
pDC->MoveTo(900,480-yp);
if(v%10)
pDC->LineTo(910,480-yp);
else
{
str.Format("%d",v);
pDC->DrawText(str,CRect(920,480-yp-10,950,480-yp+10),DT_LEFT|DT_VCENTER);
pDC->LineTo(920,480-yp);
}
}
for(int h=0;h<=200;h++)
{
pDC->MoveTo(900-h*4,480);
if(h%10)
pDC->LineTo(900-h*4,490);
else
{
str.Format("%d",h);
pDC->DrawText(str,CRect(900-h*4-15,500,900-h*4+15,520),DT_CENTER|DT_VCENTER);
pDC->LineTo(900-h*4,500);
}
}
pDC->DrawText("MPa/%/M3",CRect(105,55,150,70),DT_LEFT|DT_VCENTER);
pDC->DrawText("MPa/%/M3",CRect(750,55,895,70),DT_RIGHT|DT_VCENTER);
pDC->DrawText("(S)",CRect(50,500,80,520),DT_RIGHT|DT_VCENTER);
pDC->DrawText("(S)",CRect(910,500,950,520),DT_LEFT|DT_VCENTER);
}
void CMyWin2::InitData()
{
vName[0]=_T("XX\nXX\nXX\nXX\n冷\n水\n阀");
vName[1]=_T("XX\nXX\nXX\n罐\n进\n冷\n水\n阀");
// vName[2]=_T("加\n压\n主\n泵\n冷\n却\n阀");
vName[2]=_T("XX\nXX\nXX\nXX\nXX\n进\n热\n水\n阀");
vName[3]=_T("XX\nXX\nX\n加\n热\n阀");
vName[4]=_T("XX\nXX\nX\n加\n热\n阀");
vName[5]=_T("XX\nXX\nX\n加\n热\n阀");
vName[6]=_T("XX\nXX\nXX\nXX\nXX\nX\nXX\n热\n水\n阀");
vName[7]=_T("XX\nXX\nXX\nX\nXX\n热\n水\n阀");
vName[8]=_T("XX\nXX\nXX\nXX\nXX\n2\nXX\n热\n水\n阀");
vName[9]=_T("XX\nXX\nXX\nX\nXX\n热\n水\n阀");
vName[10]=_T("XX\nXX\nXX\nXX\nXX\nXX\n进\n口\n阀");
// vName[12]=_T("XX\nXX\nXX\nXX\n进\n口\n阀");
pName[0]=_T("主加压泵");
pName[1]=_T("冷水循环泵");
pName[2]=_T("热水循环泵");
pName[3]=_T("散热循环泵");
pName[4]=_T("冷冻水循环泵");
pName[5]=_T("XXXX泵");
pName[6]=_T("XXXX泵");
pName[7]=_T("XXXX泵");
asName[0]=_T("变频器频率");
asName[1]=_T("调节阀1开度");
asName[2]=_T("调节阀2开度");
asName[3]=_T("调节阀3开度");
asName[4]=_T("调节阀4开度");
asName[5]=_T("调节阀5开度");
opStr=_T("操作信息----无异常");
LineSC=1;
}
void CMyWin2::OnTimer(UINT nIDEvent)
{
int i;
for(i=0;i<11;i++)
V[i].Flash();
for(int j=0;j<8;j++)
P[j].Flash();
for(int k=0;k<6;k++)
AS[k].Flash();
CL.InValue();
CWnd::OnTimer(nIDEvent);
}
void CMyWin2::ShowInfo(WPARAM info)
{
opStr=(char *)info;
InvalidateRect(CRect(1000,720,1600,780));
}
void CMyWin2::SetP()
{
Ind1.ShowWindow(true);
}
void CMyWin2::SetT()
{
Ind2.ShowWindow(true);
}
void CMyWin2::SetPID()
{
Ind3.ShowWindow(true);
}
void CMyWin2::SetLineAct(WPARAM item)
{
CL.SetLineAct((int)item);
}
void CMyWin2::SetLineScale(WPARAM sp)
{
LineSC=(int)sp;
InvalidateRect(CRect(50,50,100,500));
InvalidateRect(CRect(900,50,950,500));
}
没有合适的资源?快使用搜索试试~ 我知道了~
工业控制界面范例
共72个文件
h:22个
cpp:21个
jpg:15个
4星 · 超过85%的资源 需积分: 49 159 下载量 183 浏览量
2011-08-05
14:06:22
上传
评论 1
收藏 1.14MB RAR 举报
温馨提示
该范例由实际应用范例删减而成 主要演示双缓冲技术和数据采集模型 是比较好的范例
资源推荐
资源详情
资源评论
收起资源包目录
HMI.rar (72个子文件)
HMI
Auto.clw 7KB
Select.h 743B
Valve.h 1006B
MyWin2.cpp 7KB
MyWin6.h 773B
AlSet.cpp 3KB
StdAfx.cpp 2KB
Pump.h 907B
resource.h 3KB
AlSet.h 979B
Auto.ncb 513KB
OP.cpp 860B
InfoWin.cpp 4KB
MBotton.h 599B
Auto.cpp 1KB
Auto.h 650B
Select.cpp 2KB
AutoDlg.h 1KB
WATER.jpg 65KB
Auto.aps 91KB
InfoWin.h 773B
Pump.cpp 3KB
Valve.cpp 3KB
Auto.dsw 516B
Back.jpg 158KB
Auto.dsp 6KB
Auto.plg 3KB
MyWin4.h 742B
AutoDlg.cpp 5KB
Curve.h 1KB
Pid.h 1KB
MyWin3.cpp 1KB
StdAfx.h 1016B
MyWin1.cpp 6KB
MyWin6.cpp 3KB
Pid.cpp 2KB
OP.h 635B
PLimit.cpp 3KB
Auto.opt 586KB
MyWin1.h 747B
Temp.h 1KB
MyWin2.h 1KB
MyWin5.cpp 5KB
MyWin3.h 742B
成品
萃取监控.exe 252KB
WATER.jpg 65KB
Back.jpg 158KB
Thumbs.db 8KB
AIR.JPG 65KB
Auto.rc 14KB
Tabs.h 1KB
MyWin5.h 762B
MBotton.cpp 545B
PLimit.h 1KB
Temp.cpp 2KB
res
泵.jpg 47KB
换热器.jpg 124KB
Auto.rc2 396B
冷水罐.jpg 46KB
CO2存储罐.jpg 47KB
阀.jpg 48KB
冷冻站.jpg 48KB
调节阀.jpg 65KB
Auto.ico 50KB
FACE1.psd 1.9MB
Thumbs.db 41KB
热水罐.jpg 57KB
中间罐.jpg 97KB
AIR.JPG 65KB
MyWin4.cpp 1KB
Curve.cpp 4KB
Tabs.cpp 4KB
共 72 条
- 1
gz_qmc
- 粉丝: 327
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页