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

📄 pg1dlg.cpp

📁 高性能数字直流程控电源 采用LPC2214+16位ad+16位da 可达到30V-#A
💻 CPP
📖 第 1 页 / 共 3 页
字号:
							flash=!flash;
						 }
					     else
						 {
                           m_disp="命令执行失败  ####";
							flash=!flash;
						 }
						 UpdateData(FALSE);					  
					  
					  }//if1
				  }//if2

				  if ((m_strRad.GetLength()==12)  && (m_strRad.Mid(0,2) =="AA"))
				  {
					  if(((rxdata[0]+rxdata[1]+rxdata[2]+rxdata[3]+rxdata[4]+rxdata[5])&0xff)==0)
					  {
					     int voltage,current;
						 voltage=rxdata[1];
						 voltage=voltage<<8;
						 voltage=voltage+rxdata[2];//当前电压
						 current=rxdata[3];
						 current=current<<8;
						 current=current+rxdata[4];//当前电流
						 CString v,c;
				         v.Format("%d",voltage);
				         c.Format("%d",current);
						 m_v_limit=v+"mV";
						 m_c_limit=c+"mA";
                         if(flash)
						 {
                            m_disp="命令执行成功  ****";
							flash=!flash;
						 }
					     else
						 {
                           m_disp="命令执行成功  ####";
							flash=!flash;
						 }
						 UpdateData(FALSE);
					  }
					  else
					  {
                         if(flash)
						 {
                            m_disp="命令执行失败  ****";
							flash=!flash;
						 }
					     else
						 {
                           m_disp="命令执行失败  ####";
							flash=!flash;
						 }
						 UpdateData(FALSE);					  
					  
					  }
				  }

				  else if (m_strRad.GetLength()==2 && m_strReceive==" 5A" ) 
				  {
                      if(flash)
					  {
                         m_disp="命令执行成功  ****";
					  }
					  else
					  {
                         m_disp="命令执行成功  ####";
					  }
			          UpdateData(FALSE);
					  flash=!flash;
				  }
				  else if (m_strRad.GetLength()==2 && m_strReceive==" A5" ) 
				  {
                      if(flash)
					  {
                         m_disp="命令执行失败(串口)  ****";
					  }
					  else
					  {
                         m_disp="命令执行失败(串口)  ####";
					  }
			          UpdateData(FALSE);
					  flash=!flash;
					  MessageBox("命令执行失败(串口)");
				  }
				  else if (m_strRad.GetLength()==2 && m_strReceive==" A6" ) 
				  {
                      if(flash)
					  {
                         m_disp="命令执行失败(并口)  ****";
					  }
					  else
					  {
                         m_disp="命令执行失败(并口)  ####";
					  }
			          UpdateData(FALSE);
					  flash=!flash;
				  }
				  else if (m_strRad.GetLength()==4 && m_strReceive==" 80 80" ) 
				  {
					  m_working_staus="过流硬件保护";
					  UpdateData(FALSE);
				  }
				  else if (m_strRad.GetLength()==4 && m_strReceive==" 81 7F" ) 
				  {
					  m_working_staus="过流恒流保护";
					  UpdateData(FALSE);
				  }

				  else if (m_strRad.GetLength()==4 && m_strReceive==" 90 70" ) 
				  {
					  m_working_staus="过压硬件保护";
					  UpdateData(FALSE);
				  }
				  else if (m_strRad.GetLength()==4 && m_strReceive==" 91 6F" ) 
				  {
					  m_working_staus="过压软件保护";
					  UpdateData(FALSE);
				  }
				  else if (m_strRad.GetLength()==4 && m_strReceive==" 82 7E") 
				  {
					  m_working_staus="Power Supply Working OK";
					  UpdateData(FALSE);
				  }	
			}
		}
	UpdateData(FALSE);           //更新编辑框内容	
}

void CPG1Dlg::OnSend_frame()
{
	int number;
	if(num<=(len/64))
	{
		CByteArray senddata;
        //senddata.SetSize(67);
		//senddata[66]=0;   //校验和补码
		senddata.SetSize(68);
		senddata[67]=0;   //校验和补码

        for (int i=2;i<66;i++)
		{
			if((num*64+i)<len)
				senddata[i+1]=SEND_BYTE[num*64+i];
			else
			   senddata[i+1]=0xff;
            senddata[67]=senddata[67]+senddata[i+1];
		}
		

		number=num+1;
		if (number>255)
		{
			int i=number/256;
			int j=number-i*256;
			senddata[1]=j;
			senddata[2]=i;
		}
		else
		{
			senddata[1]=number;
			senddata[2]=0;

		}
          
	// if(senddata[1]==0) senddata[1]++;

     senddata[0]=0x83; 
     senddata[67]=senddata[67]+senddata[0]+senddata[1]+senddata[2];
     senddata[67]=senddata[67] & 0xff;
     senddata[67]=0-senddata[67];
	 senddata[67]=senddata[67] & 0xff;

	m_jc.SetRange(0,len/64);
	m_jc.SetStep(1);
	m_jc.SetPos(num);

    double bai=len/64;
	bai=num/bai;
	bai=bai*100;
	int bai2=int(bai);


	CString bai1;
	bai1.Format("%ld",bai2);
    m_bai=bai1;
    UpdateData(FALSE);

     m_Com.SetOutput(COleVariant(senddata));//发送数据		
	 num++;
	}   
	else
	{
		if (!(fmod(num,2)==0))
		{

			CByteArray senddata;
			senddata.SetSize(68);
			senddata[67]=0;   //校验和补码
			for (int i=3;i<67;i++)
			{
				senddata[i]=0x0ff;
				senddata[67]=senddata[67]+senddata[i];
			}

		number=num+1;
		if (number>255)
		{
			int i=number/256;
			int j=number-i*256;
			senddata[1]=j;
			senddata[2]=i;
		}
		else
		{
			senddata[1]=number;
			senddata[2]=0;

		}


		    senddata[0]=0x83; 
			senddata[67]=senddata[67]+senddata[0]+senddata[1]+senddata[2];
			senddata[67]=senddata[67] & 0xff;
			senddata[67]=0-senddata[67];
			senddata[67]=senddata[67] & 0xff;



 		    m_jc.SetRange(0,len/64);
			m_jc.SetStep(1);
			m_jc.SetPos(num);
			double bai=len/64;
			bai=num/bai;
			bai=bai*100;
			bai=100;
			int bai2=int(bai);
			CString bai1;
			bai1.Format("%ld",bai2);
			m_bai=bai1;
			UpdateData(FALSE);
			m_Com.SetOutput(COleVariant(senddata));//发送数据		
			num++;
		}

      else
	  {
		CByteArray senddata;
        senddata.SetSize(2);
		senddata[0]=0xA1;    //数据发送结束
		senddata[1]=0x5F;  
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
	  }
	}
	
}


void CPG1Dlg::OnCancel() 
{
	CDialog::OnCancel();
}







void CPG1Dlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
    CByteArray senddata;
    senddata.SetSize(2);
    senddata[0]=0x8A;
    senddata[1]=(~senddata[0])+1;			
    m_Com.SetOutput(COleVariant(senddata));//发送数据
    SetTimer(1,200,NULL);	
	CDialog::OnTimer(nIDEvent);
}

void CPG1Dlg::OnRelay1() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1); 
		if(realy1)
		    senddata[0]=0x40;    //数据发送结束		
		else
			senddata[0]=0x41;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy1=!realy1;
}

void CPG1Dlg::OnRelay2() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy2)
		    senddata[0]=0x20;    //数据发送结束		
		else
			senddata[0]=0x21;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy2=!realy2;	
}

void CPG1Dlg::OnRelay3() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy3)
		    senddata[0]=0x30;    //数据发送结束		
		else
			senddata[0]=0x31;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy3=!realy3;	
}

void CPG1Dlg::OnRelay4() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy4)
		    senddata[0]=0x40;    //数据发送结束		
		else
			senddata[0]=0x41;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy4=!realy4;	
}

void CPG1Dlg::OnRelay5() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy5)
		    senddata[0]=0x50;    //数据发送结束		
		else
			senddata[0]=0x51;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy5=!realy5;	
}

void CPG1Dlg::OnRelay6() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy6)
		    senddata[0]=0x60;    //数据发送结束		
		else
			senddata[0]=0x61;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy6=!realy6;	
}

void CPG1Dlg::OnRelay7() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy7)
		    senddata[0]=0x70;    //数据发送结束		
		else
			senddata[0]=0x71;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy7=!realy7;	
}

void CPG1Dlg::OnRelay8() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy8)
		    senddata[0]=0x80;    //数据发送结束		
		else
			senddata[0]=0x81;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy8=!realy8;	
}

void CPG1Dlg::OnRelay9() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy9)
		    senddata[0]=0x90;    //数据发送结束		
		else
			senddata[0]=0x91;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy9=!realy9;	
}

void CPG1Dlg::OnRelay10() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy10)
		    senddata[0]=0xa0;    //数据发送结束		
		else
			senddata[0]=0xa1;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy10=!realy10;	
}

void CPG1Dlg::OnRelay11() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy11)
		    senddata[0]=0xb0;    //数据发送结束		
		else
			senddata[0]=0xb1;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy11=!realy11;	
}

void CPG1Dlg::OnRelay12() 
{
	// TODO: Add your control notification handler code here
		CByteArray senddata;
        senddata.SetSize(1);
		if(realy12)
		    senddata[0]=0xc0;    //数据发送结束		
		else
			senddata[0]=0xc1;
        m_Com.SetOutput(COleVariant(senddata));//发送数据		
		realy12=!realy12;	
}

void CPG1Dlg::OnRightGo() 
{
	// TODO: Add your control notification handler code here

		    CByteArray senddata;
            senddata.SetSize(12);
	        senddata[0]=0x10;    //数据发送结束		
	        senddata[1]=0x20;    //数据发送结束		
	        senddata[2]=0x30;    //数据发送结束		
	        senddata[3]=0x40;    //数据发送结束		
	        senddata[4]=0x50;    //数据发送结束		
	        senddata[5]=0x60;    //数据发送结束		
	        senddata[6]=0x70;    //数据发送结束		
	        senddata[7]=0x80;    //数据发送结束		
	        senddata[8]=0x90;    //数据发送结束		

⌨️ 快捷键说明

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