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

📄 displaywindow.cpp

📁 最新的USB示波器源码?可直接编译生成可执行程序,需要硬件支持
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	pOldPen = pDC->SelectObject(&pen);
	 m_OldFont=pDC->SelectObject(m_font);
	if(x<40||x>800){delete pDC;return;}
    pDC->SetROP2 (R2_XORPEN);
	pDC->MoveTo(x,20);
    pDC->LineTo(x,hh-25-(4*h_st));
	int i=x-40;
	char mes[50];
	wsprintf(mes,"x=%d,Ldy=%d,Rdy=%d    ",i,
	data[1][i],data[3][i]);
     pDC->SetBkColor(RGB(0,0,0));
     pDC->SetTextColor(RGB(255,255,0));
     pDC->TextOut(ww/2+150,3,mes);
	 */
	//delete pDC;
}

void DisplayWindow::DisDinBiaoLine(CDC * pDC)
{	
}

void DisplayWindow::draw_line(CDC *pDC,int x, BOOL flag, char F)
{  
}



void DisplayWindow::ReDrawSCreen()
{  // if(pagedata_start==NULL)return;
    //  DrawLine(0,0);
	// acquire.counter++;
	 	isDrawOther=true;
        DrawLine();

}


void DisplayWindow::OnRButtonDown(UINT nFlags, CPoint point) 
{
//	if (m_hCursor2)
//	::SetCursor(m_hCursor2);
//	mouse_XB=point.x;
//	SetCapture();
	
		CMenu menu;
		VERIFY(menu.LoadMenu(IDR_MENU_SETUP));
	
		CMenu* pPopup = menu.GetSubMenu(0);
		
		ASSERT(pPopup != NULL);
		
		CWnd* pWndPopupOwner = this;

		while (pWndPopupOwner->GetStyle() & WS_CHILD)
			pWndPopupOwner = pWndPopupOwner->GetParent();
	
		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y+90,
			pWndPopupOwner);


	CStatic::OnRButtonDown(nFlags, point);
}

void DisplayWindow::OnRButtonUp(UINT nFlags, CPoint point) 
{  // Play=0;
   // ReleaseCapture();	
	CStatic::OnRButtonUp(nFlags, point);
}

BOOL DisplayWindow::GetDinBiaoData(int x)
{
  		  return 1;
}

BOOL DisplayWindow::GetDYData()
{
  return 1;
}


BOOL DisplayWindow::DrwaDyRrand(int s)
{
	return 1;
}


void DisplayWindow::GetFenXinData()
{/*            CClientDC * pDC;
	        pDC=new CClientDC(this);
			
			delete pDC;
*/
}

BOOL DisplayWindow::GetADdata(HANDLE hDevice)
{  
    ULONG length;
    ULONG nBytes;
	BOOL bResult;
    BULK_TRANSFER_CONTROL bulkControl;
	DWORD ioctl_val ;
    int i,j;
	//int ay1,ay2,by1,by2,x1,x2;

	bulkControl.pipeNum = 1;
    length = SAMPLE_DEPTH*2;
    ioctl_val = IOCTL_EZUSB_BULK_READ;
	BYTE c;
    if (hDevice != NULL)
	{    
		bResult = DeviceIoControl (hDevice,
						ioctl_val, 
			     		&bulkControl,
						sizeof (BULK_TRANSFER_CONTROL),
						addata_buffer,//cha_addata,
						length,
						&nBytes,
						NULL);
		if( bResult != TRUE) 
			{
		       ::AfxMessageBox("获取数据有错误!");
			   return 0;
			} 

           j=0;

		if(time_base.time_d<24)
		{for(i=0;i<SAMPLE_DEPTH*2;i+=4)
			{ 
		      chb_addata[j]=addata_buffer[i]; 
	          cha_addata[j]=addata_buffer[i+2];
              j++;
			  chb_addata[j]=addata_buffer[i+1];	 
			  cha_addata[j]=addata_buffer[i+3];
			  j++;
			}
			
       


		 }
	 
		 //  i=SAMPLE_DEPTH-time_base.trigger_offset+20;
			if(time_base.time_d==24)//100ns/div 2ns/pixel
			{  
			    j=0;
				i=time_base.trigger_offset*2-SAMPLE_DEPTH/2+10*2;
            
             for(j=0;j<SAMPLE_DEPTH;j+=2,i+=4)//偶数地址放数据
			 { chb_addata[j]=addata_buffer[i];
			   cha_addata[j]=addata_buffer[i+2];
               j+=2;
			  // chb_addata[j]=addata_buffer[i]-9;
			  // cha_addata[j]=addata_buffer[i+2];
			  // j++;
			   chb_addata[j]=addata_buffer[i+1];//(addata_buffer[i+1]-addata_buffer[i])/2+(addata_buffer[i]-9);
			   cha_addata[j]=addata_buffer[i+3];//(addata_buffer[i+3]-addata_buffer[i+2])/2+addata_buffer[i+2];
               
			 }
            for(j=1;j<SAMPLE_DEPTH;j+=2)//线性插值
			 { chb_addata[j]=(chb_addata[j+1]-chb_addata[j-1])/2+chb_addata[j-1];
			   cha_addata[j]=(cha_addata[j+1]-cha_addata[j-1])/2+cha_addata[j-1];
         	 }
			
         }

		
			if(time_base.time_d==25)//50ns/div 1ns/pixel
			{  j=0;
			   i=time_base.trigger_offset*2-SAMPLE_DEPTH/4+10*2;

     
             for(j=0;j<SAMPLE_DEPTH;j+=8,i+=4)//偶数地址放数据
			 { chb_addata[j]=addata_buffer[i];
			   cha_addata[j]=addata_buffer[i+2];
              
			   chb_addata[j+4]=addata_buffer[i+1];//(addata_buffer[i+1]-addata_buffer[i])/2+(addata_buffer[i]-9);
			   cha_addata[j+4]=addata_buffer[i+3];//(addata_buffer[i+3]-addata_buffer[i+2])/2+addata_buffer[i+2];
               
			 }
            for(j=1;j<SAMPLE_DEPTH;j+=4)//
			 { chb_addata[j]=Intrepol_sin(j,chb_addata,4);//(chb_addata[j+3]-chb_addata[j-1])/4+chb_addata[j-1];
			   cha_addata[j]=Intrepol_sin(j,cha_addata,4);//(cha_addata[j+3]-cha_addata[j-1])/4+cha_addata[j-1];
			   
               chb_addata[j+1]=Intrepol_sin(j+1,chb_addata,4);//(chb_addata[j+3]-chb_addata[j-1])/2+chb_addata[j-1];
			   cha_addata[j+1]=Intrepol_sin(j+1,cha_addata,4);//(cha_addata[j+3]-cha_addata[j-1])/2+cha_addata[j-1];
			   
			   chb_addata[j+2]=Intrepol_sin(j+2,chb_addata,4);//(chb_addata[j+3]-chb_addata[j-1])*3/4+chb_addata[j-1];
			   cha_addata[j+2]=Intrepol_sin(j+2,cha_addata,4);//(cha_addata[j+3]-cha_addata[j-1])*3/4+cha_addata[j-1];
			   
			}
			}

			if(time_base.time_d>25)
			{j=0;
              i=SAMPLE_DEPTH-time_base.trigger_offset+20;
			  do{   cha_addata[j++]=addata_buffer[i+2];  
				    cha_addata[j++]=addata_buffer[i+1];
					cha_addata[j++]=addata_buffer[i+3];
				   	cha_addata[j++]=addata_buffer[i];
				
				
					i+=4;
					}while (j<SAMPLE_DEPTH-1);

			}
		if(isRecord)
		{ 
          AddPage();
		}
		return true;
	}
		return false;

}

/*
	float v;
    float ft=(float)(rand()%100);
	for(int i=0;i<1024;i++)
		{v=0.3*sin(2*PI*i/ft);
	     if(v>=0)
			ADdata[i]=128+BYTE(v*128);
			 else			
			 ADdata[i]=fabsf(v)*128;
		}

	return true;

   /*	for(i=0;i<SAMPLE_DEPTH;i+=2)
			{
                c=cha_addata[i];
			    cha_addata[i]=cha_addata[i+1];
                cha_addata[i+1]=c;

			}*/



		/*else
		{ j=0;
			for(i=0;i<SAMPLE_DEPTH*2;i+=4)
			{	 cha_addata[j++]=usb_buffer[i];
                 cha_addata[j++]=usb_buffer[i+1];
            }
		/*	for(i=0;i<2048;i+4)
			{ 
               cha_addata[j++]=usb_buffer[i];
                 cha_addata[j++]=usb_buffer[i+1];

			}*/
			 /* j=0;
				for(i=2;i<SAMPLE_DEPTH*2;i+=4)
			{	 chb_addata[j++]=usb_buffer[i];
                 chb_addata[j++]=usb_buffer[i+1];
            

			}*/




          /*	for(i=2;i<2048;i+4)
			{ 
               cha_addata[j++]=usb_buffer[i];
                 cha_addata[j++]=usb_buffer[i+1];

			}*/


void DisplayWindow::GetBackToBmp()
{
	if(firstdiswindow)
	{CClientDC * pDC;
	pDC=new CClientDC(this);
	CDC dc_Mem;
    CBitmap * oldBmp = NULL;
	dc_Mem.CreateCompatibleDC(pDC);
	oldScreen_Bitmap.CreateCompatibleBitmap(pDC,ww,hh);
	oldBmp=dc_Mem.SelectObject(&oldScreen_Bitmap);
    dc_Mem.BitBlt(0,0,ww,hh,pDC,0,0,SRCCOPY); //  将原屏幕图象(oldScreen_Bitmap)
	dc_Mem.SelectObject (oldBmp);
	dc_Mem.DeleteDC();
	firstdiswindow=0;
	 delete pDC;
	}
}

void DisplayWindow::StartAD()
{   
   	    Caiyang=1;
		comEventStart.SetEvent();
}

void DisplayWindow::PauseAD()
{
       Caiyang=false;
}

void DisplayWindow::StopAD()
{
	
   //  KillTimer(1);
//	 CloseHandle (hUsbInDevice);
}

void DisplayWindow::OnTimer(UINT nIDEvent) 
{	

}

int DisplayWindow::Trigger()
{
   WORD  a=512;
	int m_nTriggerCH1=0;
		/* CH1 Tigger */

return m_nTriggerCH1;
}

BOOL DisplayWindow::DrawDispBack(CDC *pDC,int Width, int Height)
{

	CDC dc_Mem;
    CBitmap * oldBmp = NULL;
	dc_Mem.CreateCompatibleDC(pDC);
	oldScreen_Bitmap.CreateCompatibleBitmap(pDC,Width,Height);
	oldBmp=dc_Mem.SelectObject(&oldScreen_Bitmap);
    CBrush newBrush(RGB(1,0,16));
	CRect rcClip(0,0,Width,Height);
	dc_Mem.FillRect(rcClip,&newBrush);
 	
	int h_st=Height/8;
	int w_st=Width/10;

	//CPen  dotPen(PS_DOT,1,RGB(100,100,108));
	CPen  SoldPen(PS_SOLID,1,RGB(100,100,108));
//  CPen  SoldPen(PS_SOLID,1,RGB(100,100,108));
    CPen * oldPen=dc_Mem.SelectObject(&SoldPen);
	int j;
	for(int i=1;i<10;i++)
 	 {  //draw ____line    .
		for(j=0;j<Width;j+=4)
		dc_Mem.SetPixel(j,h_st*i,RGB(100,100,108));
		//dc_Mem.MoveTo(0,h_st*i);
	    //dc_Mem.LineTo(Width,h_st*i);
        
      //draw | line  .
		for(j=0;j<Height;j+=4)
		dc_Mem.SetPixel(i*w_st,j,RGB(100,100,108));
		//dc_Mem.MoveTo(i*w_st,0);
		//dc_Mem.LineTo(i*w_st,Height);
      }
     //dc_Mem.SelectObject(oldPen);
     //oldPen=dc_Mem.SelectObject(&SoldPen);
     //draw --Line 
	 dc_Mem.MoveTo(0,h_st*4);
     dc_Mem.LineTo(Width,h_st*4);
     //draw | line  .
     dc_Mem.MoveTo(5*w_st,0);
	 dc_Mem.LineTo(5*w_st,Height);
	 //draw ^
	for(i=0;i<50;i++)
	{ dc_Mem.MoveTo(w_st/5*i,h_st*4-3);
      dc_Mem.LineTo(w_st/5*i,h_st*4+3);
     //draw | line  .
     dc_Mem.MoveTo(5*w_st-3,h_st/5*i);
	 dc_Mem.LineTo(5*w_st+3,h_st/5*i);
	}	
//	dc_Mem.BitBlt(0,0,ww,hh,pDC,0,0,SRCCOPY); //  将原屏幕图象(oldScreen_Bitmap)
	dc_Mem.SelectObject (GetStockObject(NULL_BRUSH));
	dc_Mem.Rectangle (0,0,Width,Height);
	dc_Mem.SelectObject (oldPen);
	dc_Mem.SelectObject (oldBmp);
	dc_Mem.DeleteDC();
  
   return true;
}

void DisplayWindow::DisVoltage(CDC *pDC,int x, int y, int w, int h)
{
//   char vv[13][10]={"40.0","36.0","32.0","28.0","24.0",
//		 "20.0","16.0","12.0","8.0","4.0","0.0"};
	/*
     m_OldFont=pDC->SelectObject(m_font);
     CString mes;
     pDC->SetBkColor(RGB(1,0,16));
	 pDC->SetTextColor(RGB(100,100,108));

	 
	  if(vlots/100>=1)
	 {
		 for( int i=0;i<=4;i++)
			 { mes.Format("%0.1f",(vlots/1000.)*(4-i));
			   pDC->TextOut(25,y+i*h/8,mes);
			}
		 for(;i<=8;i++)
			{ mes.Format("-%0.1f",(vlots/1000.0)*(i-4));
			pDC->TextOut(25,y+i*h/8,mes);
			}
		 mes="Vlotage (V)";
	 }
	 else
	 {
		 for( int i=0;i<=4;i++)
			 { mes.Format("%0.1f",vlots*(4-i));
			    pDC->TextOut(25,y+i*h/8,mes);
			}
		 for(;i<=8;i++)
			{ mes.Format("-%0.1f",vlots*(i-4));
				pDC->TextOut(25,y+i*h/8,mes);
			}
		 mes="Vlotage (mV)";
	 }
//	for( int i=0;i<=10;i++)
//	 { 
//	  pDC->TextOut(25,y+i*h/10,vv[i]);
//	}
//	mes="Current (A)";
	CFont sFont;
	sFont.CreateFont(15,0,900,0,0,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
         CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,NULL);
	 CFont * pOldFont;
	 pOldFont=pDC->SelectObject(&sFont);
     pDC->TextOut(5,y+h/2+40,mes);
	 //CRect rt(5,0,20,h);
	 //pDC->DrawText (mes,rt,DT_CENTER|DT_BOTTOM |DT_SINGLELINE);
	 pDC->SelectObject(pOldFont);*/
 }
const char  time_div[][10]={"10s","5s","2s","1s","0.5s","0.2s","0.1s","50ms",
"20ms","10ms","5ms" ,"2ms","1ms","0.5ms","0.2ms","0.1ms","50us","20us","10us",
"5us" ,"2us","1us" ,"500ns","200ns","100ns","50ns","20ns","10ns","5ns"};
const char acquire_freq[][10]={"25MHz","50MHz","100MHz","250MHz","500MHz"};
//const char time_div_str[][10]={ "s","s","s","s","s","s","s","ms","ms","ms","ms","ms", "ms","ms" ,"ms" ,"ms" ,"us",
//"us","us","us","us","us", "us", "us", "us","ns","ns","ns"}; 
#define TEXT_WND_W 100
#define TEXT_WND_H 50
#define TEXT_WND_H_OFFSET 32
void DisplayWindow::DisTimeVlem(CDC *pDC, int x, int y, int w, int h)
{
	 m_OldFont=pDC->SelectObject(m_font);
     CString title;
	 CString str1;
	 CString str2;
	 float t_level;
	  int cha_vd=0;
	  int chb_vd=0;
	 pDC->SetBkMode (TRANSPARENT);
	 CRect rect,rt;
     if(cha_param.display )
	 {   cha_vd=cha_param.vlot_d *cha_param.probe;
		 if( cha_vd/1000>=1)
	      str1.Format ("%dV/div",cha_vd/1000);
	    else
          str1.Format ("%dmV/div",cha_vd);
         if(cha_param.couping)
			 str2="AC coupline";
			 else
              str2="DC coupline";
	  // cha_param.y_offset 	
		
		DrawRectForText(pDC,x,y+h+TEXT_WND_H_OFFSET,"CHA",str1,str2);
	 }
	 if(chb_param.display )
	 {chb_vd=chb_param.vlot_d *chb_param.probe;
	
	 if(chb_vd/1000>=1)
	   str1.Format ("%dV/div",chb_vd/1000);
	 else
        str1.Format ("%dmV/div",chb_vd);

	  if(chb_param.couping)
			str2="AC coupline"; 
			 else
              str2="DC coupline";
     DrawRectForText(pDC,x+TEXT_WND_W+4,y+h+TEXT_WND_H_OFFSET,"CHB",str1,str2);
	 }
    int vd=0;
	str1=_T("");
	str2=_T("");

	 switch(trigger.source )
	 {
	 case 0:   //CHA 
		 str1="CHA ";
         vd=cha_vd;
		 break;
	 case 1:   //CHB
         str1="CHB ";
		 vd=chb_vd;
		 break;
	 case 2:   //EXT
		 str1="Ext ";
		 vd=0;
		 break;
	 case 3:   //EXT/5
		 str1="Ext/5 ";
		 vd=0;
		 break;
	 }

     switch(trigger.coupling)
	 {

	 case 0:
		 str1+="DC ";
		 break;
	 case 1:
		 str1+="AC ";
		 break;
	 case 2:
		 str1+="LF ";
		 break;
	 case 3:
		 str1+="HF ";
		 break;
	 }

   
	 if(vd>0){



	 t_level=(float)((((float)(trigger.level)-128.0)/128.0)*vd*5.0);
		 //(float)((float)m_cha_vlot_div*4.0*(DISHEIGHT/2-trig_level))/(DISHEIGHT/2);
	 if(abs(t_level/1000)>=1)
		  str2.Format ("%0.2fV",t_level/1000);
	 else
         str2.Format ("%0.2fmV",t_level);
	 
	 }

⌨️ 快捷键说明

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