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

📄 煤气取样过程计算机模拟view.cpp

📁 本程序是利用VC开发的炼钢炉煤气取样过程的图形化监控程序。界面中的自动演示按钮可以演示整个取样过程。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        (*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 + -