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

📄 channelwave.cpp

📁 vc数据采集程序,有曲线现实和数据显示以及采集卡设置
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	CString sscal;
	scal=10;
	max=m_RectMax;
	min=m_RectMin;
	if(max>4095) {max=4095;m_CRecMax.SetWindowText("200");}
	if(min<0) {min=0;m_CRecMin.SetWindowText("0");}
	if(max<=min) 
	{
		max=min+210;
		if(max>=4095) max=4095;
		m_RectMax=max;
		sscal.Format("%d",max);
		m_CRecMax.SetWindowText(sscal);
		
	}
	
	if((max-min)>212)
	{
		max=min+212;
		sscal.Format("%4d",max);
		m_CRecMax.SetWindowText(sscal);
	}
	CWnd  *rWnd=GetDlgItem(IDC_RECTMAP);
    CDC *rDC=rWnd->GetDC();
    CRect Rrect;
    ::GetClientRect(rWnd->m_hWnd,Rrect);
	
	CBrush rbrush(RGB(255,255,255));
	CBrush* porbrush=rDC->SelectObject(&rbrush);
	rDC->Rectangle(Rrect);
    rDC->SelectObject(porbrush);
	rDC->SetViewportOrg(0,Rrect.bottom);	
	rDC->SelectObject(porbrush);
	
	CPen NewPen(PS_DOT,1,RGB(0,0,0));
	CPen* pOldBrush=rDC->SelectObject(&NewPen);
	
	for(int g=1;g<=10;g++)
	{
		rDC->MoveTo(0,-Rrect.bottom*g/10);
		rDC->LineTo(Rrect.right,-Rrect.bottom*g/10);
		sscal.Format("%d",scal*g);
		rDC->SetBkColor(GetSysColor(COLOR_MENU));
		rDC->TextOut(Rrect.right+5,-Rrect.bottom*g/10,sscal);
	}
	
	sscal.Format("%d",min);
	rDC->TextOut(5,0,sscal);
	sscal.Format("%d",max);
	rDC->SetBkColor(GetSysColor(COLOR_MENU));
	rDC->TextOut(Rrect.right-15,0,sscal);
	rDC->SelectObject(pOldBrush);
	ReleaseDC(rDC);
	//	delete rDC;
	
}

void CchannelWave::OnModede() 
{   //rww=D16+D17*2+D18*4+D20*16+D21*32+D22*64+D23*128;
	// TODO: Add your control notification handler code here
	UpdateData(true);

	
	UpdateData();		
	//unsigned long  cardno=0;  //指定卡号卡号必须从0开始,如果同类型的卡只有一个,则必须为0
		
		if (IO_Handle==NULL)
		{
			AfxMessageBox("板卡没有打开!");
			return;
		}
	for (int m_hist=0;m_hist<=4095;m_hist++) hist[m_hist]=0;
    for (int m_hist1=0;m_hist1<33;m_hist1++)
	{
		for(int m_hist2=0;m_hist2<4096;m_hist2++)
	hist1[m_hist1][m_hist2]=0;}
	CMODE dlg;
	dlg.p2=1;
	dlg.p4=0;
	dlg.p3=0;
	if(dlg.DoModal()==IDOK)
	{
		scal=dlg.m_D16_Scan;
		channel=dlg.m_VChannal;
		Period=dlg.m_VsamplePeriod;
		
	}
	else
	{
        if(IO_Handle!=NULL)
		{
			HKP812F_Close(IO_Handle);
		}
		
	}
	
	CPointm mdlg;
	if(mdlg.DoModal()==IDOK)
	{   
		pointm=mdlg.m_Vpointm;
	}
	else return;
	
	 
	Rww=dlg.rww;
    p_CHUFA=dlg.p1;
	p_CLOCK=dlg.p2;
	p_DANSHUANG=dlg.p3;
	p_ZAOMIAO=dlg.p4;
	p_FENPIN=dlg.p5;
	/*if(IO_Handle!=NULL)
	   {
		   HKP812F_Close(IO_Handle);
	   }
	*/
}

void CchannelWave::OnRescreen() 
{  
	
	UpdateData();
	Chart();
	Mypaint();	
	ColorBCheck[1]=m_che01;
	ColorBCheck[2]=m_che02;
	ColorBCheck[3]=m_che03;
	ColorBCheck[4]=m_che04;
	ColorBCheck[5]=m_che05;
	ColorBCheck[6]=m_che06;
	ColorBCheck[7]=m_che07;
	ColorBCheck[8]=m_che08;
	ColorBCheck[9]=m_che09;
	ColorBCheck[10]=m_che10;
	ColorBCheck[11]=m_che11;
	ColorBCheck[12]=m_che12;
	ColorBCheck[13]=m_che13;
	ColorBCheck[14]=m_che14;
	ColorBCheck[15]=m_che15;
	ColorBCheck[16]=m_che16;

	ColorBCheck[17]=m_che17;
	ColorBCheck[18]=m_che18;
	ColorBCheck[19]=m_che19;
	ColorBCheck[20]=m_che20;
	ColorBCheck[21]=m_che21;
	ColorBCheck[22]=m_che22;
	ColorBCheck[23]=m_che23;
	ColorBCheck[24]=m_che24;
	ColorBCheck[25]=m_che25;
	ColorBCheck[26]=m_che26;
	ColorBCheck[27]=m_che27;
	ColorBCheck[28]=m_che28;
	ColorBCheck[29]=m_che29;
	ColorBCheck[30]=m_che30;
	ColorBCheck[31]=m_che31;
	ColorBCheck[32]=m_che32;
	
    CWnd  *cWndn=GetDlgItem(IDC_RECTMAP);
	CDC *cDCn=cWndn->GetDC();
	CRect Rncect;
	::GetClientRect(cWndn->m_hWnd,Rncect);
	
	CWnd  *cWndm=GetDlgItem(IDC_WAVEMAP);
	CDC *cDCm=cWndm->GetDC();
	CRect Rcect;
	::GetClientRect(cWndm->m_hWnd,Rcect);
	
	if(scal)
	{
		for (int i=0;i<=channel-1;i++)
		{
			if (ColorBCheck[i+1])
			{ 
				CPen NewPen(PS_SOLID,1,Color[i+1]);
				CPen* pOldBrush=cDCm->SelectObject(&NewPen);
				cDCm->MoveTo(0,Rcect.bottom-Rcect.bottom*buffer[channel-i-1+channel*m_left]/4096);	
				for (int j=1;j<=((m_left+700)<=(pointm/channel)?(700):(pointm/channel-1)-m_left);j++)
					cDCm->LineTo(j,Rcect.bottom-Rcect.bottom*buffer[j*channel+channel-i-1+channel*m_left]/4096);
			}
			
		}
		for (int ii=0;ii<=channel-1;ii++)
		{
			if (ColorBCheck[ii+1])
			{
				for (int k=m_RectMin;k<=m_RectMax;k++)
				{
					CRect fill(((k-m_RectMin)*Rncect.right)/(m_RectMax-m_RectMin+1),
						Rncect.bottom-hist1[ii][k]*Rncect.bottom*channel/pointm,
						((k-m_RectMin)*Rncect.right)/(m_RectMax-m_RectMin+1)+Rncect.right/(m_RectMax-m_RectMin+1),
						Rncect.bottom);
					if(ColorCheck[ii+1])
					{
						CBrush nbrush(Color[ii+1]);
						CBrush* pobrush=cDCn->SelectObject(&nbrush);
						cDCn->Rectangle(fill);
						cDCn->SelectObject(pobrush);
					}			
				}
			}
			
		}  
	}
	else
	{
		if (ColorBCheck[channel])
		{
			CPen NewPenm(PS_SOLID,1,Color[channel]);
			CPen* pOldBrush=cDCm->SelectObject(&NewPenm);
			cDCm->MoveTo(0,Rcect.bottom-Rcect.bottom*buffer[m_left]/4096);	
			for (int jj=1;jj<=((m_left+700)<=pointm?700:pointm-1-m_left);jj++)
				cDCm->LineTo(jj,Rcect.bottom-Rcect.bottom*buffer[jj+m_left]/4096);
			cDCn->SelectObject(pOldBrush);
			for (int k=m_RectMin;k<=m_RectMax;k++)
			{
				CRect fill(((k-m_RectMin)*Rncect.right)/(m_RectMax-m_RectMin+1),Rncect.bottom-hist[k]*Rncect.bottom/pointm,((k-m_RectMin)*Rncect.right)/(m_RectMax-m_RectMin+1)+Rncect.right/(m_RectMax-m_RectMin+1),Rncect.bottom);
				CBrush nbrush(Color[channel]);
				CBrush* pobrush=cDCn->SelectObject(&nbrush);
				cDCn->Rectangle(fill);
				cDCn->SelectObject(pobrush);
			}
		}
	}
}

void CchannelWave::OnScreendown() 
{
	// TODO: Add your control notification handler code here
	
	UpdateData();
	m_left=m_left+100;
	if(scal)
	{
		if(	m_left>pointm/channel)
			m_left=m_left-100;
	}
	else
	{
		if(	m_left>pointm)
			m_left=m_left-100;
	}
	OnRescreen();
}

void CchannelWave::OnScreenup() 
{
	// TODO: Add your control notification handler code here
	
	UpdateData();
	m_left=m_left-100;
	if(	m_left<0) m_left=0;
	OnRescreen();
}








void CchannelWave::OnButton2() 
{
	if (IO_Handle==NULL)
		{
			AfxMessageBox("板卡没有打开!");
			return;
		}
	KillTimer(m_timer);
	//IO_Handle=HKP812F_LocateAndOpen(0);
	WORD data=1234;
	int cha=channel-1;
	
	buffert=buffer;
	HKP812F_TimerStop(IO_Handle);
	//HKP812F_ModeWrite(IO_Handle,2,1,0,2);
               HKP812F_FIFOCls(IO_Handle);
			   for(int tttt=0;tttt<pointm;tttt++)
			   {
				   *buffert=HKP812F_ReadFIFO(IO_Handle);
				   buffert=buffert+1;
			   }
 for( long int ii=0;ii<=pointm;ii++ ) 
			   {	
				   data=buffer[ii];
				   
				   if(scal)
				   {
					   hist1[cha][data]++;
					   cha--;	
					   if(cha==-1) cha=channel-1;
				   }
				   else hist[data]++;
			   }
			  
		
m_CRescreen.EnableWindow();
	   m_CScrDown.EnableWindow();
	   m_CScrUp.EnableWindow();
	   m_CRecMax.EnableWindow();
       m_CRecMin.EnableWindow();
	   /*if(IO_Handle!=NULL)
	   {
		   HKP812F_Close(IO_Handle);
	   }*/
	   
	   Mypaint();
}

void CchannelWave::OnStartAD() 
{
	if (IO_Handle==NULL)
		{
			AfxMessageBox("板卡没有打开!");
			return;
		}
WORD data=1234;
    BYTE m_RWW=(BYTE)Rww;
    Rww=Rww & 0x00000030 ;
	int cha=channel-1;	 
	BYTE m_RSW=(BYTE)channel;
	
	//IO_Handle=HKP812F_LocateAndOpen(0);
	switch(Rww)
	{
	case 0x00000000:
		{
			
			HKP812F_ChannelWrite(IO_Handle,m_RSW-1);//add write channel  AD12_HANDLE X,BYTE m_RSW  
			HKP812F_ModeWrite(IO_Handle,p_CHUFA,p_DANSHUANG,p_ZAOMIAO,p_FENPIN);//ADD write dll zpz_writemode function.rww
			HKP812F_ChannelWrite(IO_Handle,m_RSW-1);
			HKP812F_FIFOCls(IO_Handle);
	        
			HKP812F_SoftConvert(IO_Handle);
			data=HKP812F_Check_ReadFIFO(IO_Handle);	
	        
			/*
			//data=HKP812F_Check_ReadFIFO(IO_Handle);
			buffert=buffer;
			//HKP812F_HFSFCheck_ReadFIFO(IO_Handle,4,buffert);
			for(int tt=0;tt<(pointm/512);tt++)
			{
				HKP812F_HFSFCheck_ReadFIFO(IO_Handle,1,buffert);
				buffert=buffert+512;
			}
			
			for( long int i=0;i<=pointm;i++ ) 
			{
				for(int del=0;del<=Period;del++)
				{
					for(int del2=0;del2<=(512*4);del2++);
				}
				data=buffer[i];
				if(scal)
				{
					hist1[cha][data]++;
					cha--;	
					if(cha==-1) cha=channel-1;
				}
				else hist[data]++;
			}//soft
			m_CRescreen.EnableWindow();
	   m_CScrDown.EnableWindow();
	   m_CScrUp.EnableWindow();
	   m_CRecMax.EnableWindow();
       m_CRecMin.EnableWindow();
	   
	   Mypaint();
			*/
			break;
		}
	case 0x00000020:
		{
			HKP812F_ModeWrite(IO_Handle,0,0,0,2);
		
			HKP812F_FIFOCls(IO_Handle);
	           m_RWW=m_RWW | 0x02;
			   HKP812F_TimerWrite(IO_Handle,Period);             
			   
			   HKP812F_ChannelWrite(IO_Handle,m_RSW-1);
			   HKP812F_ModeWrite(IO_Handle,p_CHUFA,p_DANSHUANG,p_ZAOMIAO,p_FENPIN);
			   HKP812F_ChannelWrite(IO_Handle,m_RSW-1);
			   HKP812F_TimerStart(IO_Handle);
			   
			   //data=HKP812F_Check_ReadFIFO(IO_Handle);
			   //data=HKP812F_Check_ReadFIFO(IO_Handle);	
			   //data=HKP812F_Check_ReadFIFO(IO_Handle);
			   buffert=buffer;
			   
			   //利用函数HKP812F_Check_ReadFIFO
			   /*for(int ttt=0;ttt<pointm;ttt++)
			   {
				   *buffert=HKP812F_Check_ReadFIFO(IO_Handle);
				   buffert=buffert+1;
			   }
			   HKP812F_TimerStop(IO_Handle);*/
			   //利用函数HKP812F_HFCheck_ReadFIFO
			   
			   for(int ttt=0;ttt<=(int)(pointm/512);ttt++)
			   {
				   HKP812F_HFCheck_ReadFIFO(IO_Handle,1,buffert);
				   buffert=buffert+512;
			   }
			   
			   

			   for( long int ii=0;ii<=pointm;ii++ ) 
			   {	
				   data=buffer[ii];
				   
				   if(scal)
				   {
					   hist1[cha][data]++;
					   cha--;	
					   if(cha==-1) cha=channel-1;
				   }
				   else hist[data]++;
			   }
			   m_CRescreen.EnableWindow();
	           m_CScrDown.EnableWindow();
	           m_CScrUp.EnableWindow();
	           m_CRecMax.EnableWindow();
               m_CRecMin.EnableWindow();
	  /*if(IO_Handle!=NULL)
	   {
		   HKP812F_Close(IO_Handle);
	   }*/
	   
	   Mypaint();	
	   m_timer=SetTimer(1,1000,0);
			   break;
		}
	case 0x00000010:
		{  
			//add write channel
		HKP812F_ModeWrite(IO_Handle,0,0,0,2);
		HKP812F_ChannelWrite(IO_Handle,m_RSW-1);//add write channel  AD12_HANDLE X,BYTE m_RSW  
	HKP812F_FIFOCls(IO_Handle);
	HKP812F_ModeWrite(IO_Handle,p_CHUFA,p_DANSHUANG,p_ZAOMIAO,p_FENPIN);//ADD write dll zpz_writemode function.rww
		HKP812F_ChannelWrite(IO_Handle,m_RSW-1);	
/*		
			HKP812F_FIFOCls(IO_Handle);
			HKP812F_ChannelWrite(IO_Handle,m_RSW-1);
			HKP812F_ModeWrite(IO_Handle,m_RWW);*/
			
			//data=HKP812F_Check_ReadFIFO(IO_Handle);
			//data=HKP812F_Check_ReadFIFO(IO_Handle);	
			//data=HKP812F_Check_ReadFIFO(IO_Handle);
			buffert=buffer;
			HKP812F_HFCheck_ReadFIFO(IO_Handle,4,buffert);
			for(int tttt=0;tttt<pointm;tttt++)
			{
				*buffert=HKP812F_Check_ReadFIFO(IO_Handle);
				buffert=buffert+1;
			}
			
			for( long int iii=0;iii<=pointm;iii++ ) 
			{	
				data=buffer[iii];	
				if(scal)
				{
					hist1[cha][data]++;
					cha--;	
					if(cha==-1) cha=channel-1;
				}
				else hist[data]++;
			}
			m_CRescreen.EnableWindow();
	   m_CScrDown.EnableWindow();
	   m_CScrUp.EnableWindow();
	   m_CRecMax.EnableWindow();
       m_CRecMin.EnableWindow();
	   /*if(IO_Handle!=NULL)
	   {
		   HKP812F_Close(IO_Handle);
	   }
	   */
	   Mypaint();	
			break;
		}
		
	}
	   
}

void CchannelWave::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	
	//OnScreendown();
	WORD data=1234;
    BYTE m_RWW=(BYTE)Rww;
    Rww=Rww & 0x00000030 ;
	int cha=channel-1;	 
	BYTE m_RSW=(BYTE)channel;
	
	//IO_Handle=HKP812F_LocateAndOpen(0);
	switch(Rww)
	{
	case 0x00000000:
		{

⌨️ 快捷键说明

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