📄 dsomaindlg.cpp
字号:
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 + -