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