📄 煤气取样过程计算机模拟view.cpp
字号:
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
}
else
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
}
//F5_region4
(*pDC).Rectangle(67,367,107,372);
//F5_region5
(*pDC).Rectangle(67,367,72,437);
//end
//show F5 analysis pipe fill
if((CaptureValve_F5==1)&&(AnalysisStart==1))
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
}
else
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
}
(*pDC).Rectangle(66,488,72,520);
//end
//show F1 pipe fill
if(SweepValve_F1==1)
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
}
else
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
}
//F1_region1
(*pDC).Rectangle(78,63,629,67);
//F1_region2
(*pDC).Rectangle(624,63,629,454);
//F1_region3
if((SweepValve_F1==1)&&(Ball_X3==0))
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
(*pDC).Rectangle(624,449,706,454);
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
(*pDC).Rectangle(755,449,811,454);
}
if((SweepValve_F1==1)&&(Ball_X3==1))
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
(*pDC).Rectangle(624,449,811,454);
}
if((SweepValve_F1==0)&&(Ball_X3==0))
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
(*pDC).Rectangle(624,449,706,454);
(*pDC).Rectangle(755,449,811,454);
}
if((SweepValve_F1==0)&&(Ball_X3==1))
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
(*pDC).Rectangle(624,449,811,454);
}
//end
//show F2 pipe fill
if(PreventValve_F2==1)
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
}
else
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
}
//F2_region1
(*pDC).Rectangle(78,130,353,135);
//F2_region2
(*pDC).Rectangle(348,130,353,411);
//F2_region3
(*pDC).Rectangle(348,407,589,411);
//F2_region4
(*pDC).Rectangle(589,376,594,450);
//end
//show F3 pipe fill
if(AirProofValve_F3==1)
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
}
else
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
}
//F3_region1
(*pDC).Rectangle(78,97,474,101);
//F3_region2
(*pDC).Rectangle(469,97,474,347);
//F3_region3
(*pDC).Rectangle(469,342,604,347);
//F3_region4
(*pDC).Rectangle(604,342,609,437);
//end
//show F4 pipe fill
if((AirValve_F17==1)&&(BallValve_F4==1))
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
//F17、4_region1
(*pDC).Rectangle(78,30,732,34);
//F17、4_region2
(*pDC).Rectangle(727,30,732,320);
//F17、4_region3 left
(*pDC).Rectangle(682,316,732,320);
//F17、4_region4
(*pDC).Rectangle(682,316,687,417);
//F17、4_region5
(*pDC).Rectangle(682,412,713,417);
//hide right
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
//F17、4_region3 right
(*pDC).Rectangle(732,316,777,320);
//F17、4_region4
(*pDC).Rectangle(772,316,777,417);
//F17、4_region5
(*pDC).Rectangle(746,412,777,417);
}
if((AirValve_F17==1)&&(BallValve_F4==0))
{
(*pDC).SelectObject(&Brush1);
(*pDC).SelectObject(&Pen1);
//F17、4_region1
(*pDC).Rectangle(78,30,732,34);
//F17、4_region2
(*pDC).Rectangle(727,30,732,320);
//F17、4_region3 right
(*pDC).Rectangle(727,316,777,320);
//F17、4_region4
(*pDC).Rectangle(772,316,777,417);
//F17、4_region5
(*pDC).Rectangle(746,412,777,417);
//hide left
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
//F17、4_region3 left
(*pDC).Rectangle(682,316,727,320);
//F17、4_region4
(*pDC).Rectangle(682,316,687,417);
//F17、4_region5
(*pDC).Rectangle(682,412,713,417);
}
if(AirValve_F17==0)
{
(*pDC).SelectObject(&Brush2);
(*pDC).SelectObject(&Pen2);
//F17、4_region1
(*pDC).Rectangle(78,30,732,34);
//F17、4_region2
(*pDC).Rectangle(727,30,732,320);
//F17、4_region3 left
(*pDC).Rectangle(682,316,732,320);
//F17、4_region4
(*pDC).Rectangle(682,316,687,417);
//F17、4_region5
(*pDC).Rectangle(682,412,713,417);
//F17、4_region3 right
(*pDC).Rectangle(727,316,777,320);
//F17、4_region4
(*pDC).Rectangle(772,316,777,417);
//F17、4_region5
(*pDC).Rectangle(746,412,777,417);
}
//end
//show F4
if(BallValve_F4==0)
{
ImageDC.SelectObject(&BitBMP2);
BitBlt(pDC->m_hDC, 673, 336, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 763, 336, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
}
else
{
ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 673, 336, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
ImageDC.SelectObject(&BitBMP2);
BitBlt(pDC->m_hDC, 763, 336, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
}
//show F17
if(AirValve_F17==0) ImageDC.SelectObject(&BitBMP2);
else ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 718, 175, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
//show F3 valve
if(AirProofValve_F3==0) ImageDC.SelectObject(&BitBMP2);
else ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 460, 273, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
//show F2 valve
if(PreventValve_F2==0) ImageDC.SelectObject(&BitBMP2);
else ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 339, 273, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
//show F1 valve
if(SweepValve_F1==0) ImageDC.SelectObject(&BitBMP2);
else ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 615, 175, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
//F11-16 valve
if(AntiSweepValve_F11==1) ImageDC.SelectObject(&BitBMP1);
else ImageDC.SelectObject(&BitBMP2);
BitBlt(pDC->m_hDC, 99, 273, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
//F5-10 valve
if(CaptureValve_F5==0) ImageDC.SelectObject(&BitBMP2);
else ImageDC.SelectObject(&BitBMP1);
BitBlt(pDC->m_hDC, 58, 392, 23, 22, ImageDC.m_hDC, 0, 0, SRCCOPY);
}
/////
if(nIDEvent==3)//timer3 data commucation and process
{
//SendDataOnCom1();
//PLCDataProcess();
}
ReleaseDC(pDC);
ImageDC.DeleteDC();
//} /////else end
if((nIDEvent==4)&&(AutoDisp==1)) //autodisplay
{
//N0.1
if(Step1==1)
{
SweepValve_F1=1;
AntiSweepValve_F11=1;
Step1=0;
Step2=1;
}
//No.2
if((GetTickCount()-InitTime>5000)&&(Step2==1))
{
BallValve_F4=1;
AirValve_F17=1;
PreventValve_F2=1;
Ball_X3=1;
Step2=0;
Step3=1;
}
//No.3
if(Step3==1)
{
if( Ball_X3==1)
{
MotorForward=1;
AirProofValve_F3=1;
}
if(GetTickCount()-InitTime>10000)
{
AirValve_F17=0;
Step3=0;
Step4=1;
}
}
//No.4
if((GetTickCount()-InitTime>15000)&&(Step4==1))
{
SweepValve_F1=0;
Step4=0;
Step5=1;
}
//No.5
if((GetTickCount()-InitTime>40000)&&(Step5==1))
{
MotorForward=0;
AntiSweepValve_F11=0;
CaptureValve_F5=1;
CaptureStart=1;
Step5=0;
Step67=1;
}
//No.6 and 7
if((GetTickCount()-InitTime>80000)&&(Step67==1))
{
CaptureValve_F5=0;
SweepValve_F1=1;
AntiSweepValve_F11=1;
MotorBackward=1;
CaptureStart=0;
Step67=0;
Step8=1;
}
//No.8
if((GetTickCount()-InitTime>115000)&&(Step8==1))
{
MotorBackward=0;
BallValve_F4=0;
AirValve_F17=1;
Ball_X3=0;
Step8=0;
Step9=1;
}
//NO.9
if((GetTickCount()-InitTime>130000)&&(Step9==1))
{
AirProofValve_F3=0;
SweepValve_F1=0;
AntiSweepValve_F11=0;
PreventValve_F2=0;
AirValve_F17=0;
Step9=0;
Step10=1;
}
//No.10
if(Step10==1)
{
AnalysisStart=1;
CaptureValve_F5=1;
Step10=0;
Step11=1;
}
//No.11
if((GetTickCount()-InitTime>145000)&&(Step11==1))
{
AnalysisStart=0;
CaptureValve_F5=0;
Step11=0;
}
}
CFormView::OnTimer(nIDEvent);
}
BEGIN_EVENTSINK_MAP(CMyView, CFormView)
//{{AFX_EVENTSINK_MAP(CMyView)
ON_EVENT(CMyView, IDC_MSCOMM1, 1 /* OnComm */, OnComm1, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CMyView::OnComm1()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[1024];
CString strtemp,string1;
//read PLC reply word
if((m_OnCom1.GetCommEvent()==2)&&(m_OnCom1.GetInBufferCount()==75)&&(ReadORWrite_plc))
{
variant_inp=m_OnCom1.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
m_readPLCdata+=strtemp;
}
if(m_readPLCdata.GetAt(4)=='W')
{
m_OnCom1.SetInBufferCount(0);
m_readPLCdata.Empty();
}
}
//write PLC reply word
/* if((m_OnCom1.GetCommEvent()==2)&&(m_OnCom1.GetInBufferCount()==11)&&(!ReadORWrite_plc))
{
m_OnCom1.SetInBufferCount(0);
ReadORWrite_plc=TRUE;
}
*/
}
////
void CMyView::SendDataOnCom1()
{
CString string1="";
char buff[1024];
memset(&buff,0,sizeof(buff));
////write control
if(ReadORWrite_plc)
{
m_OnCom1.SetOutBufferCount(0);
m_writePLCdata.Empty();
m_writePLCdata=READDATACODE;
string1=FCS(m_writePLCdata);
m_writePLCdata+=string1;
strcpy((LPSTR)buff,m_writePLCdata);
buff[strlen(buff)] = 42;
buff[strlen(buff)] = 13;
m_OnCom1.SetOutput(COleVariant((LPSTR)buff));
}
}
////
CString CMyView::FCS(CString Str_sur)
{
int I=0,length=0,TT=0,WW=0;
CString Str_fcs="",string1="";
char buff[1024],szBuffer[10];
memset(&buff,0,sizeof(buff));
strcpy((LPSTR)buff,Str_sur);
length=strlen(buff);
WW=buff[0];
for(I=1;I<length;I++)
{
TT=buff[I];
WW=WW^TT;
}
wsprintf((LPSTR) szBuffer,"%X",WW);
Str_fcs=(LPSTR) szBuffer;
//
length=0;
length=Str_fcs.GetLength();
if (length<2)
{
string1=Str_fcs;
Str_fcs.Format("%d%s",0,string1);
}
return (Str_fcs);
}
void CMyView::PLCDataProcess()
{
int c;
char buff[1024];
CString string1="",string2="",string3="",string4="";
CString str="";
memset(&buff,0,sizeof(buff));
strcpy((LPSTR)buff,m_readPLCdata);
if (ReadORWrite_plc) //read PLC
{
if ((c=strlen(buff)) == 75)
{
for(int k=0;k<(c-4);k++)
{
BYTE btt=buff[k];
string2.Format("%c",btt);
string1+=string2;
}
string2=m_readPLCdata.Right(4);
string3=string2.Left(2);
string4=FCS(string1);
/////////校验
if (string3.Compare(string4)==0)
{
if(atoi(string1.Mid(7,4))==0) NearFire_X1=0;
else NearFire_X1=1;
if(atoi(string1.Mid(11,4))==0) FarFire_X2=0;
else FarFire_X2=1;
if(atoi(string1.Mid(15,4))==0) Ball_X3=0;
else Ball_X3=1;
if(atoi(string1.Mid(19,4))==0) SweepValve_F1=0;
else SweepValve_F1=1;
if(atoi(string1.Mid(23,4))==0) PreventValve_F2=0;
else PreventValve_F2=1;
if(atoi(string1.Mid(27,4))==0) AirProofValve_F3=0;
else AirProofValve_F3=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -