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

📄 dsomaindlg.cpp

📁 最新的USB示波器源码?可直接编译生成可执行程序,需要硬件支持
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    trigger.level=128;
    trigger.display =true;
    trigger.disp_counter=0;
 	ord[0]='C';

	switch(trigger.source)
	{
	case 0:
	
		ord[1]=TRIGGER_SOURCE_CHA;
		trigger.display =true;

			break;
	case 1:
		ord[1]=TRIGGER_SOURCE_CHB;
		trigger.display =true;
		
		break;
	case 2:
	 	 ord[0]='L';
		 ord[1]=0x20;
		 ord[2]=0;
		 ord[3]=0x74;
         SendCommandToUSB(VR_USRCMD);
		 ord[0]='C';
		 ord[1]=TRIG_SEL_EXT;
	     trigger.display =true;
        





			break;
	case 3:
		 ord[0]='L';
		 ord[1]=0x21;
		 ord[2]=0;
		 ord[3]=0x74;
         SendCommandToUSB(VR_USRCMD);
		 ord[0]='C';
		 ord[1]=TRIG_SEL_EXT;
	
		trigger.display =false;
		break;
	}
	trigger.disp_counter=0;
	m_displayWnd.ReDrawSCreen();
    SendCommandToUSB(VR_USRCMD);

		
}


void CDSOMainDlg::OnTrigCoupline() 
{
	trigger.coupling=m_trig_coupline_but.GetSelectSite();
	m_displayWnd.ReDrawSCreen();
	ord[0]='C';
	switch(trigger.coupling)
	{
	case 0:
		ord[1]=TRIGGER_COUPLINE_DC;
		break;
	case 1:
		ord[1]=TRIGGER_COUPLINE_AC;
		break;
	case 2:
		ord[1]=TRIGGER_COUPLINE_LF;
		break;
	case 3:
		ord[1]=TRIGGER_COUPLINE_HF;
		break;


}


SendCommandToUSB(VR_USRCMD);	
}

void CDSOMainDlg::OnChaCoupline() 
{
	cha_param.couping =m_cha_coupline_but.GetSelectSite();	
	m_displayWnd.ReDrawSCreen();

	ord[0]=CMD_I;
	ord[2]=0;
	ord[1]=0;
     coupline_reg=0x00;
    if(cha_param.couping==0)
		ord[1]=0x01;
	else
       if(cha_param.couping==1)
	     coupline_reg=0x40;
	   else
         if(cha_param.couping==2)
            ord[1]=0x02;
  	ord[3]=0;
	ord[4]=0;
	ord[5]=0;
	ord[6]=0;
	ord[1]|=coupline_reg;
	SendCommandToUSB(VR_USRCMD);
	Sleep(10);
    
	ord[1]=0x00;
   	ord[1]|=coupline_reg;
    SendCommandToUSB(VR_USRCMD);	


}

void CDSOMainDlg::OnChbCoupline() 
{
chb_param.couping =m_chb_coupline_but.GetSelectSite();	
m_displayWnd.ReDrawSCreen();
	ord[0]=CMD_I;
	ord[2]=1;
	ord[1]=0;
     coupline_reg=0x00;
    if(chb_param.couping==0)
		ord[1]=0x01;
	else
       if(chb_param.couping==1)
	     coupline_reg=0x40;
	   else
         if(chb_param.couping==2)
            ord[1]=0x02;
  	ord[3]=0;
	ord[4]=0;
	ord[5]=0;
	ord[6]=0;
	ord[1]|=coupline_reg;
	SendCommandToUSB(VR_USRCMD);
	Sleep(10);
    
	ord[1]=0x00;
   	ord[1]|=coupline_reg;
    SendCommandToUSB(VR_USRCMD);	
	
}

void CDSOMainDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
 WORD i;
	CSliderCtrl	*pSlider = (CSliderCtrl *)pScrollBar;

	if(pSlider == &m_trigSit_ctrl) 
	{   i= (WORD) pSlider->GetPos ();
		  time_base.trigger_offset=SAMPLE_DEPTH-i*2;
	
		   ord[0]='T';
		   ord[2]=(BYTE)(i&0x00ff);
		   i>>=8;
           ord[1]=(BYTE)(i&0x00ff);
          SendCommandToUSB(VR_USRCMD);	 
	
	}

	if(pSlider == &m_memory_offset_ctrl) 
	{time_base.memory_offset = pSlider->GetPos ();
	
	}
	m_displayWnd.ReDrawSCreen();
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CDSOMainDlg::SendMessageToCom(unsigned char *data, int n)
{
  //#ifdef COMM
	int i;
//	COleVariant varOutput;
	unsigned char Sum=0;
	CByteArray array;
	array.RemoveAll();
	array.SetSize(n);
   
	for(i=0;i<n;i++)
	array.SetAt(i,data[i]);

	if(!m_ComPort.GetPortOpen())
	m_ComPort.SetPortOpen(1);
	m_ComPort.SetOutput(COleVariant(array));
	
}

void CDSOMainDlg::SendCommandToComPort()
{int i;

//	if(!isRun)
		SendMessageToCom(ord,COMM_NUMBER);  
  /*  else
	   {for(i=0;i<COMM_NUMBER;i++)
	       txbuffer[i]=ord[i];
		send_req=true;
	}*/

	for( i=0;i<COMM_NUMBER;i++)
		 ord[i]=0;

}
void CDSOMainDlg::OnRunStop() 
{
	if(!isRun)
	{ord[0]='R';
     SendCommandToUSB(VR_USRCMD);

	 Sleep(10);
     ord[0]='C';
     ord[1]=CHA_PDWN_N;
     SendCommandToUSB(VR_USRCMD);

      m_displayWnd.StartAD();
	 isRun=true;
     m_run_stop_but.SetTextColor(RGB(0,255,0));
	}
   else
   { ord[0]='P';
	 SendCommandToUSB(VR_USRCMD);
     Sleep(10);
	ord[0]='C';
    ord[1]=CHA_PDWN_P;
	SendCommandToUSB(VR_USRCMD);

    m_displayWnd.PauseAD();
	 isRun=false;
	 m_run_stop_but.SetTextColor(RGB(0,0,0));
   }
}
extern unsigned char cha_addata[SAMPLE_DEPTH];
extern unsigned char chb_addata[SAMPLE_DEPTH];
//#include "InputFileNameDlg.h"
void CDSOMainDlg::OnSave() 
{	CString tempstr; 
    CFileDialog Filedlg(FALSE, ".dat", NULL,
				OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
				"波形数据文件 (*.dat)|*.dat||", this);
    int nResult;
	if((nResult=Filedlg.DoModal())!=IDOK)return;
    tempstr=Filedlg.GetPathName().GetBuffer(0);
   	if(!isRun)
	{
	FILE *stream_IN; 
   	stream_IN=fopen(tempstr,"w+");
	if(stream_IN==NULL){return ;}
	fprintf(stream_IN,"%d\n", cha_param.vlot_d );
	fprintf(stream_IN,"%d\n", cha_param.probe );

	fprintf(stream_IN,"%d\n", time_base.time_d );
   	fprintf(stream_IN,"%d\n", time_base.x_step );
   
	for(int i=0;i<SAMPLE_DEPTH;i++)
    {  fprintf(stream_IN,"%02x\n",cha_addata[i]);
	   }
    

      fclose( stream_IN );
	  MessageBox("数据存储成功! ");
	}


		for(int i=0;i<SAMPLE_DEPTH;i++)
          cha_addata[i]=0;
}

#include "SelectDownLoadCHXDlg.h"

void CDSOMainDlg::OnLoad() 
{

     char filter[]="波形数据文件 (*.dat)|*.dat";
	CFileDialog fileDlg(true ,NULL,"*.dat",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,filter);

	if(fileDlg.DoModal ()!=IDOK)return;
	CString filename=fileDlg.GetPathName ();
    CSelectDownLoadCHXDlg dlg;
	dlg.DoModal ();
	BOOL ischx;

	ischx=dlg.isCha ;
    FILE * stream_OUT=NULL; 
  //  int t;

	stream_OUT=fopen(filename,"r");
		
	if(stream_OUT==NULL)return ;
    if(ischx){
	fscanf(stream_OUT,"%d\n", &cha_param.vlot_d);
	fscanf(stream_OUT,"%d\n", &cha_param.probe);

 	fscanf(stream_OUT,"%d\n", &time_base.time_d);
   	fscanf(stream_OUT,"%d\n", &time_base.x_step);
//	fscanf(stream_OUT,"%d\n",&length);
	for(int i=0;i<SAMPLE_DEPTH;i++)
	fscanf(stream_OUT,"%02x\n",&cha_addata[i]);
    fclose( stream_OUT );

/*  	for( i=0;i<SAMPLE_DEPTH;i+=2)
        {  d= cha_addata[i];
           cha_addata[i]=cha_addata[i+1];
		   cha_addata[i+1]=d;
		}*/
	for(i=0;i<10;i++)
		if(cha_param.vlot_d==vlot_div[i])
			break;
	m_chadbCtl.SetStartSwitch(i);
    m_Time_Ctrl.SetStartSwitch(time_base.time_d);
    switch(cha_param.probe)
	{
	case 1:
         m_cha_1x_but.SetCheck(1);
		 m_cha_10x_but.SetCheck(0);
         m_cha_100x_but.SetCheck(0);
	   break;
	   case 10:
		 m_cha_1x_but.SetCheck(0);
		 m_cha_10x_but.SetCheck(1);
         m_cha_100x_but.SetCheck(0);
		 break;
	   case 100:
		 m_cha_1x_but.SetCheck(0);
		 m_cha_10x_but.SetCheck(0);
         m_cha_100x_but.SetCheck(1);
		 break;
	}
	
	}else
	{
    fscanf(stream_OUT,"%d\n", &chb_param.vlot_d);
	fscanf(stream_OUT,"%d\n", &chb_param.probe);

 	fscanf(stream_OUT,"%d\n", &time_base.time_d);
   	fscanf(stream_OUT,"%d\n", &time_base.x_step);
//	fscanf(stream_OUT,"%d\n",&length);
	for(int i=0;i<SAMPLE_DEPTH;i++)
	fscanf(stream_OUT,"%02x\n",&chb_addata[i]);
    fclose( stream_OUT );
   /* for(i=0;i<SAMPLE_DEPTH/2;i++)
	{	d=chb_addata[i];
	    chb_addata[i]=chb_addata[(SAMPLE_DEPTH-1)-i];
        chb_addata[SAMPLE_DEPTH-i]=d;
	}*/
	/*	for( i=0;i<SAMPLE_DEPTH/2;i+=2)
        {  d= chb_addata[i];
           chb_addata[i]=chb_addata[i+1];
		   chb_addata[i+1]=d;
		}*/
   
	for(i=0;i<10;i++)
		if(chb_param.vlot_d==vlot_div[i])
			break;
	m_chadbCtl.SetStartSwitch(i);
    m_Time_Ctrl.SetStartSwitch(time_base.time_d);
    switch(chb_param.probe)
	{
	case 1:
         m_chb_1x_but.SetCheck(1);
		 m_chb_10x_but.SetCheck(0);
         m_chb_100x_but.SetCheck(0);
	   break;
	   case 10:
		 m_chb_1x_but.SetCheck(0);
		 m_chb_10x_but.SetCheck(1);
         m_chb_100x_but.SetCheck(0);
		 break;
	   case 100:
		 m_chb_1x_but.SetCheck(0);
		 m_chb_10x_but.SetCheck(0);
         m_chb_100x_but.SetCheck(1);
		 break;
	}
  chb_param.display =true;

	}
	
		
	m_displayWnd.ReDrawSCreen();
}

BEGIN_EVENTSINK_MAP(CDSOMainDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CDSOMainDlg)
	ON_EVENT(CDSOMainDlg, IDC_MSCOMM, 1 /* OnComm */, OnOnCommMscomm, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CDSOMainDlg::OnOnCommMscomm() 
{
    VARIANT vR;
    static int count,i,n;
//	BYTE tt;
//	MessageBeep(-1); 
   
//	if(m_ComPort.GetCommEvent()!=2)
//	return;

	int l=m_ComPort.GetInBufferCount();
//	if(l!=2*SAMPLE_DEPTH)return;
 
    unsigned char * data;
	m_ComPort.SetBreak(0);   
	m_ComPort.SetInputLen(l); //12
    vR=m_ComPort.GetInput();
    data=(unsigned char *)vR.parray->pvData;
   // m_com_str.Format("%s",data);

   // m_com_str.Format("0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",data[0],
	//	data[1],data[2],data[3],data[4],data[5],data[6],data[7]);
//	UpdateData(0);
    n=0;
	for(i=0;i<l;i+=4)
	{
	cha_addata[n++]=data[i];
    cha_addata[n++]=data[i+1];
	   }
	n=0;
for(i=2;i<l;i+=4)
	{chb_addata[n++]=data[i];
      chb_addata[n++]=data[i+1];
	   } 
//  memcpy(cha_addata,data,SAMPLE_DEPTH);
/*
 for(i=0;i<SAMPLE_DEPTH;i+=2)
 {tt=cha_addata[i+1];
   cha_addata[i+1]=cha_addata[i];
    cha_addata[i]=tt;
 }*/
	::SendMessage(m_displayWnd,WM_MY_DRAWGRAPH,NULL,NULL);//m_DisplayWnd.AddOneData(ch1,ch2,ch3);
//	
//	if(send_req)
  //  { SendCommandToUSB(0x0);//SendMessageToCom(txbuffer,COMM_NUMBER);
    //  send_req=false;
//	}
  //  Sleep(20);
	txbuffer[0]='R';   //开始采集数据
 	SendMessageToCom(txbuffer,COMM_NUMBER);  



}
/*
  unsigned int t,x;
     unsigned char *p;

	 p=data+Sample_Depth;
	 t=0;
	 for(i=0;i<4;i++)
	 {	 x=0;
		 x|=*p++;
	     x<<=i*8;
		 t|=x;
	 }
	 //t|=*p;
	 m_displayWnd.cntB=t;
	 t=0;
	 for(i=0;i<4;i++)
	 {   x=0;
		 x|=*p++;
	     x<<=i*8;
		 t|=x;
	 }
	// t|=*p;
	 
	m_displayWnd.cntX=t;
*/

void CDSOMainDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
   	CPen  newPen(PS_SOLID,1,RGB(0,0,0));
    
	CPen *  oldPen=NULL;
    oldPen=	dc.SelectObject (&newPen);
	if(trigger.method==0)
	{
       dc.MoveTo (885,276);
	   dc.LineTo (892,276);
	   dc.LineTo (892,260);
	   dc.LineTo (899,260);
	 
	   dc.MoveTo (892-1,260+8-2);
	   dc.LineTo (892+1,260+8-2);
       dc.MoveTo (892-2,260+8-1);
	   dc.LineTo (892+2,260+8-1);
       dc.MoveTo (892-3,260+8);
	   dc.LineTo (892+3,260+8);
	   dc.MoveTo (892-4,260+8+1);
	   dc.LineTo (892+4,260+8+1);
      

       dc.MoveTo (885,295);
	   dc.LineTo (892,295);
	   dc.LineTo (892,311);
	   dc.LineTo (899,311);
	 
	   dc.MoveTo (892-4,295+8-2);
	   dc.LineTo (892+4,295+8-2);
       dc.MoveTo (892-3,295+8-1);
	   dc.LineTo (892+3,295+8-1);
       dc.MoveTo (892-2,295+8);
	   dc.LineTo (892+2,295+8);
	   dc.MoveTo (892-1,295+8+1);
	   dc.LineTo (892+1,295+8+1);
	}
     else
	 {
	   dc.MoveTo (880,276);
       dc.LineTo (885,276);
	   dc.LineTo (885,260);
	   dc.LineTo (890,260);
	   dc.LineTo (890,276);
	   dc.LineTo (897,276);
	  
       
	   dc.MoveTo (880,292);
       dc.LineTo (885,292);
	   dc.LineTo (885,309);
	   dc.LineTo (890,309);
	   dc.LineTo (890,292);
	   dc.LineTo (897,292);
	 }
dc.SelectObject(oldPen);
   //CRect rect;
   //GetClientRect(&rect);
   //dc.FillSolidRect (&rect,RGB(125,125,125));	
	// Do not call CDialog::OnPaint() for painting messages
}


BOOL CDSOMainDlg::SendCommandToUSB(BYTE order)
{


  unsigned char sum;
  BOOL bResult=false;
  sum=0;
  for(int i=0;i<7;i++)
  sum+=ord[i];
  sum=~sum+1;
  ord[i]=sum;
    
 	#ifdef COMM_PORT

⌨️ 快捷键说明

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