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

📄 comm.cpp

📁 波峰焊后台控制软件-英文版
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					    theApp.yxbuf01=Com1_RxdBuffer[7];				       
					    theApp.yxtask.krbuf[0].Value=~theApp.yxbuf00;
					    theApp.yxtask.krbuf[1].Value=~theApp.yxbuf01;

						work.Word=0;
						work.B.Low =Com1_RxdBuffer[20];
						work.B.High=Com1_RxdBuffer[21];
						switch(Com1_RxdBuffer[5])
						{							
							case 0x00: theApp.FreqOut[0]=work.Word;
									   break;
							case 0x01: theApp.FreqOut[1]=work.Word;
								       break;
							case 0x02: theApp.FreqOut[2]=work.Word;
								       break;
							case 0x03: theApp.FreqOut[3]=work.Word;
								       break;
						}						
					    theApp.Warn[0]=Com1_RxdBuffer[10];
					    theApp.Warn[1]=Com1_RxdBuffer[11];
					    theApp.Warn[2]=Com1_RxdBuffer[12];
					    theApp.Warn[3]=Com1_RxdBuffer[13];
					    theApp.yxtask.krbuf[8].Value =theApp.Warn[0];
//					    theApp.yxtask.krbuf[9].Value =theApp.Warn[1];
					    theApp.yxtask.krbuf[10].Value=theApp.Warn[2];
					    theApp.yxtask.krbuf[11].Value=theApp.Warn[3];
						theApp.ComCount++;
			            break;
			case  0x03: // 3 遥控操作
			            break;
			case  0x04: // 4 传送数据     
				        work.Word=0;
						work.B.Low =Com1_RxdBuffer[12];
						work.B.High=Com1_RxdBuffer[13];
						dx=(double)work.Word;
						dx=dx*287.0/23.0+0.4;
				        theApp.BoardLength=dx;
			            break;
		    case  0x05: // 5 4018 设置命令
				        break;
			case  0x06: // 6 PID 参数设置
//				        AfxMessageBox(_T("PID OK"));
				        break;
			case  0x07: // 7  取RAM变量
				        break;
			case  0x08: // 8  复位
				        break;						
			case  0x09: // 9   4018 设置命令
				        break;
			case  0x0A: // 10  4012 设置命令
				        break;
			case  0x0B: // 11  4021 设置命令
				        break;
			 default:   break;
		}


	 }//else  AfxMessageBox(_T("sum err"));
	 Com1_RxdBuffer[0]=0x55;
  }
  return(nLength);
}


//////////////////////////////////////////////////////////////////////////
// ReceiveFrame
BOOL Ccomm::ReceiveFrame2()
{

  int  nLength,i,j;
  union WDAT work;
  OVERLAPPED OverLappedRX;
  double   dx,dy,dt;
  CString  string,str;

  Com2_dwLengthRX=14;
  
  if(Com2_ErrorFlag)
  {
     MessageBox(NULL,_T("程序检测到,串口2发生了严重错误,通信工作无法继续进行!"),_T("系统提示"),MB_OK|MB_ICONSTOP);
     return (0);
  }
  
  nLength=ReadFile(Com2_idComDev,Com2_RxdBuffer,Com2_dwLengthRX,&Com2_dwLengthRX,&OverLappedRX);
  if(nLength==0) 
  {
	MessageBox(NULL,_T("ReadFile False!"),_T("MESSAGE..."),MB_OK);
  }

  j=0;
  if((Com2_RxdBuffer[0]!=0x02)) 
  {
	  j++;
  }
  if(ReceiveSum2()==false)
  {
	  j++;
  }
  if(j==0)
  {
      work.B.Low =  Com2_RxdBuffer[3];
      work.B.High=  Com2_RxdBuffer[4]; 
	  theApp.plc_con_ret[0]=work.Word;
//0: 波峰1
//1: 编码
//2: 喷头原点
//3: 喷头终点
//4: 入板检知
      theApp.yxtask.krbuf[2].Value=work.B.Low;
	  theApp.yxtask.krbuf[3].Value=work.B.High;
      work.B.Low =  Com2_RxdBuffer[5];
      work.B.High=  Com2_RxdBuffer[6]; 
	  theApp.plc_con_ret[1]=work.Word;

      
	  work.B.Low =  Com2_RxdBuffer[7];
      work.B.High=  Com2_RxdBuffer[8]; 
	  theApp.pw_len_ret=work.Word;
      work.B.Low =  Com2_RxdBuffer[9]; 
      work.B.High=  Com2_RxdBuffer[10]; 
	  theApp.pw_with_ret=work.Word;
	  Com2_RxdBuffer[0]=0x55;
      theApp.Com2_Rxd_Flag++;
  }
  return(nLength);
}


//////////////////////////////////////////////////////////////////////////
// MakeFrame
void Ccomm::MakeFrame1(int idCommand)
{
   UINT  crcCode;
   int  i,len,sl_adjust;
   union WDAT work;
   unsigned char ch;
   double  dx;
   double  kk=32.796,dk;
   union IWDAT  para;
   


   Com1_TxdBuffer[0]=0xaa;       //开始标志SOH

   switch(idCommand)
   {
      case 0x00: //召唤温度
		    /*    00   AAH  SYN   召唤温度	     */
			/*	  19H  LEN		       00*/
			/*	  00H  CMD		       01*/
			/*	  XXH  CMD_SWITCH	   02*/
			/*	  XXH  YKOUT0		   03*/
			/*	  XXH  YKOUT1		   04*/
			/*	  XXH  YKOUT2		   05*/
			/*	  XXH  YKOUT3		   06*/
			/*	  XXH  V0FSET.LOW	   07*/
			/*	  XXH  V0FSET.HIGH	   08*/
			/*	  XXH  V0CONTROL	   09*/
			/*	  XXH  V1FSET.LOW	   10*/
			/*	  XXH  V1FSET.HIGH	   11*/
			/*	  XXH  V1CONTROL	   12*/
			/*	  XXH  V2FSET.LOW	   13*/
			/*	  XXH  V2FSET.HIGH	   14*/
			/*	  XXH  V2CONTROL	   15*/
			/*	  XXH  V3FSET.LOW	   16*/
			/*	  XXH  V3FSET.HIGH	   17*/
			/*	  XXH  V3CONTROL	   18*/
			/*	  XXH  VOUT.LOW 	   19*/
			/*	  XXH  VOUT.HIGH	   20*/
			/*	  XXH  VIN.LOW		   21*/
			/*	  XXH  VIN.HIGH 	   22*/
			/*	  XXH  BAK00		   23*/
			/*	  XXH  BAK01		   24*/
			/*	  XXH  BAK02		   25*/
			/*	  XXH  BAK03		   26*/
			/*	  XXH  SUM		       27*/
				 Com1_TxdBuffer[1]=0x19;  //len
                 Com1_TxdBuffer[2]=0x00;  //cmd
				 ch=0;

				 if(theApp.pid_switch!=0) ch=ch | 0x01;
				               else       ch=ch & 0xfe;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,130)) ch=ch | 0x02;
				                                              else      ch=ch & 0xfd;   
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,131)) ch=ch | 0x04;
				                                              else      ch=ch & 0xfb;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,132)) ch=ch | 0x08;
				                                              else      ch=ch & 0xf7;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,133)) ch=ch | 0x10;
				                                             else       ch=ch & 0xef;   
				 if(theApp.WorkMode!=0)   ch=ch | 0x20;
                               else       ch=ch & 0xdf;
                 if(theApp.SelfCheckFlag!=0) ch=ch | 0x80;
                          else               ch=ch & 0x7f;

                 Com1_TxdBuffer[3]=ch;
                 Com1_TxdBuffer[4]=theApp.ykout[0];//ykout0
                 Com1_TxdBuffer[5]=theApp.ykout[1];//ykout1
                 Com1_TxdBuffer[6]=theApp.ykout[2];//ykout1
                 Com1_TxdBuffer[7]=theApp.ykout[3];//ykout1

				 work.Word=theApp.vfds0_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[8]=work.B.Low;
                 Com1_TxdBuffer[9]=work.B.High;
				 Com1_TxdBuffer[10]=theApp.vfds0_control;


				 work.Word=theApp.vfds1_Frequency;
				 if(work.Word>5000)work.Word=5000;				  
				 Com1_TxdBuffer[11]=work.B.Low;
                 Com1_TxdBuffer[12]=work.B.High;  
				 Com1_TxdBuffer[13]=theApp.vfds1_control;

				 work.Word=theApp.vfds2_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[14]=work.B.Low;
                 Com1_TxdBuffer[15]=work.B.High;
				 Com1_TxdBuffer[16]=theApp.vfds2_control;

				 work.Word=theApp.vfds3_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[17]=work.B.Low;
                 Com1_TxdBuffer[18]=work.B.High;
				 Com1_TxdBuffer[19]=theApp.vfds3_control;

				 work.Word=theApp.vout;
				 Com1_TxdBuffer[20]=work.B.Low;
				 Com1_TxdBuffer[21]=work.B.High;
				 work.Word=theApp.vin;
				 Com1_TxdBuffer[22]=work.B.Low;
				 Com1_TxdBuffer[23]=work.B.High;

				 Com1_TxdBuffer[24]=0;
				 Com1_TxdBuffer[25]=0;
				 Com1_TxdBuffer[26]=0;
				 Com1_TxdBuffer[27]=0;

			     EscapeCommFunction(Com1_idComDev,SETRTS);//置发送允许,但是不发送

				 ch=0;
				 for (i=1; i<28; i++) ch=ch+Com1_TxdBuffer[i];
				 Com1_TxdBuffer[28]=ch;
		         Com1_dwLengthTX=(DWORD)29;
	             Com1_WorkStatus = NOUSER;  //0x4000;
	             break;
      case 0x01: //召唤温度参数
				 Com1_TxdBuffer[1]=0x19;  //len
                 Com1_TxdBuffer[2]=0x01;  //cmd
				 ch=0;
				 if(theApp.pid_switch!=0) ch=ch | 0x01;
				               else       ch=ch & 0xfe;   
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,130)) ch=ch | 0x02;
				                                              else      ch=ch & 0xfd;   
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,131)) ch=ch | 0x04;
				                                              else      ch=ch & 0xfb;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,132)) ch=ch | 0x08;
				                                              else      ch=ch & 0xf7;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,133)) ch=ch | 0x10;
				                                             else       ch=ch & 0xef;   

				 if(theApp.WorkMode!=0)   ch=ch | 0x20;
                               else       ch=ch & 0xdf;   

                 if(theApp.SelfCheckFlag!=0) ch=ch | 0x80;
                          else               ch=ch & 0x7f;   

                 Com1_TxdBuffer[3]=ch;
                 Com1_TxdBuffer[4]=theApp.ykout[0];//ykout0
                 Com1_TxdBuffer[5]=theApp.ykout[1];//ykout1
                 Com1_TxdBuffer[6]=theApp.ykout[2];//ykout1
                 Com1_TxdBuffer[7]=theApp.ykout[3];//ykout1
				 work.Word=theApp.vfds0_Frequency;
				 if(work.Word>5000)work.Word=5000;				  
				 Com1_TxdBuffer[8]=work.B.Low;
                 Com1_TxdBuffer[9]=work.B.High;  
				 Com1_TxdBuffer[10]=theApp.vfds0_control;

				 work.Word=theApp.vfds1_Frequency;
				 if(work.Word>5000)work.Word=5000;				  
				 Com1_TxdBuffer[11]=work.B.Low;
                 Com1_TxdBuffer[12]=work.B.High;  
				 Com1_TxdBuffer[13]=theApp.vfds1_control;

				 work.Word=theApp.vfds2_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[14]=work.B.Low;
                 Com1_TxdBuffer[15]=work.B.High;
				 Com1_TxdBuffer[16]=theApp.vfds2_control;

				 work.Word=theApp.vfds3_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[17]=work.B.Low;
                 Com1_TxdBuffer[18]=work.B.High;
				 Com1_TxdBuffer[19]=theApp.vfds3_control;

				 work.Word=theApp.vout;
				 Com1_TxdBuffer[20]=work.B.Low;
				 Com1_TxdBuffer[21]=work.B.High;
				 work.Word=theApp.vin;
				 Com1_TxdBuffer[22]=work.B.Low;
				 Com1_TxdBuffer[23]=work.B.High;

				 Com1_TxdBuffer[24]=0;
				 Com1_TxdBuffer[25]=0;
				 Com1_TxdBuffer[26]=0;
				 Com1_TxdBuffer[27]=0;

			     EscapeCommFunction(Com1_idComDev,SETRTS);//置发送允许,但是不发送

				 ch=0;
				 for (i=1; i<28; i++) ch=ch+Com1_TxdBuffer[i];
				 Com1_TxdBuffer[28]=ch;
		         Com1_dwLengthTX=(DWORD)29;
	             Com1_WorkStatus = NOUSER;  //0x4000;
	             break;
      case 0x02: //召唤VFDS参数 
				 Com1_TxdBuffer[1]=0x19;  //len
                 Com1_TxdBuffer[2]=0x02;  //cmd
				 ch=0;				 
				 if(theApp.pid_switch!=0) ch=ch | 0x01;
				               else       ch=ch & 0xfe;   
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,130)) ch=ch | 0x02;
				                                              else      ch=ch & 0xfd;   
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,131)) ch=ch | 0x04;
				                                              else      ch=ch & 0xfb;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,132)) ch=ch | 0x08;
				                                              else      ch=ch & 0xf7;
				 if(theApp.yxtask.BitTestChar(theApp.yxtask.yxbuf,133)) ch=ch | 0x10;
				                                             else       ch=ch & 0xef;   

				 if(theApp.WorkMode!=0)   ch=ch | 0x20;
                               else       ch=ch & 0xdf;   
							   
                 if(theApp.SelfCheckFlag!=0) ch=ch | 0x80;
                          else               ch=ch & 0x7f;   
							   
                 Com1_TxdBuffer[3]=ch;
                 Com1_TxdBuffer[4]=theApp.ykout[0];//ykout0
                 Com1_TxdBuffer[5]=theApp.ykout[1];//ykout1
                 Com1_TxdBuffer[6]=theApp.ykout[2];//ykout1
                 Com1_TxdBuffer[7]=theApp.ykout[3];//ykout1
				 work.Word=theApp.vfds0_Frequency;
				 if(work.Word>5000)work.Word=5000;				  
				 Com1_TxdBuffer[8]=work.B.Low;
                 Com1_TxdBuffer[9]=work.B.High;  
				 Com1_TxdBuffer[10]=theApp.vfds0_control;

				 work.Word=theApp.vfds1_Frequency;
				 if(work.Word>5000)work.Word=5000;				  
				 Com1_TxdBuffer[11]=work.B.Low;
                 Com1_TxdBuffer[12]=work.B.High;  
				 Com1_TxdBuffer[13]=theApp.vfds1_control;

				 work.Word=theApp.vfds2_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[14]=work.B.Low;
                 Com1_TxdBuffer[15]=work.B.High;
				 Com1_TxdBuffer[16]=theApp.vfds2_control;

				 work.Word=theApp.vfds3_Frequency;
				 if(work.Word>5000)work.Word=5000;
				 Com1_TxdBuffer[17]=work.B.Low;
                 Com1_TxdBuffer[18]=work.B.High;
				 Com1_TxdBuffer[19]=theApp.vfds3_control;

				 work.Word=theApp.vout;
				 Com1_TxdBuffer[20]=work.B.Low;
				 Com1_TxdBuffer[21]=work.B.High;
				 work.Word=theApp.vin;
				 Com1_TxdBuffer[22]=work.B.Low;
				 Com1_TxdBuffer[23]=work.B.High;

				 Com1_TxdBuffer[24]=0;
				 Com1_TxdBuffer[25]=0;
				 Com1_TxdBuffer[26]=0;
				 Com1_TxdBuffer[27]=0;

			     EscapeCommFunction(Com1_idComDev,SETRTS);//置发送允许,但是不发送
				 ch=0;
				 for (i=1; i<28; i++) ch=ch+Com1_TxdBuffer[i];
				 Com1_TxdBuffer[28]=ch;
		         Com1_dwLengthTX=(DWORD)29;
	             Com1_WorkStatus = NOUSER;  //0x4000;
	             break;
      case 0x03: //PID参数下装
		         if(theApp.Pid_Channel>7)  theApp.Pid_Channel=0;
		         Com1_TxdBuffer[1]=0x39;  //len  57字节
                 Com1_TxdBuffer[2]=0x06;  //cmd
				 Com1_TxdBuffer[3]=theApp.Pid_Channel;
				 para.integer=0;
                 para.integer=theApp.p_gain[theApp.Pid_Channel];
				 Com1_TxdBuffer[4]=para.B.B0;
				 Com1_TxdBuffer[5]=para.B.B1;
				 Com1_TxdBuffer[6]=para.B.B2;
				 Com1_TxdBuffer[7]=para.B.B3;
                 para.integer=theApp.i_gain[theApp.Pid_Channel];
				 Com1_TxdBuffer[8] =para.B.B0;
				 Com1_TxdBuffer[9] =para.B.B1;
				 Com1_TxdBuffer[10]=para.B.B2;
				 Com1_TxdBuffer[11]=para.B.B3;
                 para.integer=theApp.d_gain[theApp.Pid_Channel];
				 Com1_TxdBuffer[12] =para.B.B0;
				 Com1_TxdBuffer[13] =para.B.B1;
				 Com1_TxdBuffer[14]=para.B.B2;
				 Com1_TxdBuffer[15]=para.B.B3;			 
                 para.integer=theApp.acc_ff[theApp.Pid_Channel];
				 Com1_TxdBuffer[16]=para.B.B0;
				 Com1_TxdBuffer[17]=para.B.B1;
				 Com1_TxdBuffer[18]=para.B.B2;
				 Com1_TxdBuffer[19]=para.B.B3;
                 para.integer=theApp.fri_ff[theApp.Pid_Channel];
				 Com1_TxdBuffer[20]=para.B.B0;
				 Com1_TxdBuffer[21]=para.B.B1;
				 Com1_TxdBuffer[22]=para.B.B2;
				 Com1_TxdBuffer[23]=para.B.B3;
                 para.integer=theApp.vel_ff[theApp.Pid_Channel];
				 Com1_TxdBuffer[24]=para.B.B0;
				 Com1_TxdBuffer[25]=para.B.B1;
				 Com1_TxdBuffer[26]=para.B.B2;
				 Com1_TxdBuffer[27]=para.B.B3;
                 para.integer=theApp.hold[theApp.Pid_Channel];
				 Com1_TxdBuffer[28]=para.B.B0;
				 Com1_TxdBuffer[29]=para.B.B1;
				 Com1_TxdBuffer[30]=para.B.B2;
				 Com1_TxdBuffer[31]=para.B.B3;
                 para.integer=theApp.bias[theApp.Pid_Channel];
				 Com1_TxdBuffer[32]=para.B.B0;
				 Com1_TxdBuffer[33]=para.B.B1;
				 Com1_TxdBuffer[34]=para.B.B2;
				 Com1_TxdBuffer[35]=para.B.B3;
                 para.integer=theApp.accel[theApp.Pid_Channel];
				 Com1_TxdBuffer[36]=para.B.B0;
				 Com1_TxdBuffer[37]=para.B.B1;
				 Com1_TxdBuffer[38]=para.B.B2;
				 Com1_TxdBuffer[39]=para.B.B3;
				 switch(theApp.Pid_Channel)
				 {
				 case  0x00:theApp.setpt[0]=(int)(theApp.sl_temper_set*10);
					        if( (theApp.temper_value[0]+10)>(theApp.setpt[0]))
							{
                               sl_adjust=theApp.setpt[0]-10;
							}else
							{
                               sl_adjust=theApp.setpt[0];
							}
                            para.integer=sl_adjust;
					        break;
				 case  0x01:theApp.setpt[1]=(int)(theApp.rh1_temper_set*10);
                            para.integer=theApp.setpt[theApp.Pid_Channel];
					        break;
				 case  0x02:theApp.setpt[2]=(int)(theApp.rh2_temper_set*10);

⌨️ 快捷键说明

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