📄 unit1.cpp
字号:
MultiImage=false;
//ForStand=1;
Form1->N13->Caption="叠加波形";
Form1->N3->Enabled=false;
Form1->suiComboBox1->Visible=false;
Form1->N9->Caption="显示坐标系";
Form1->N10->Caption="显示波形参数";
Form1->N13->Enabled=false;
Form1->Image1->Picture=NULL;
Form1->N30->Enabled=false;
Form1->N31->Caption="单色叠加";
Form1->N31->Enabled=false;
Form1->N32->Enabled=false;
Form4->suiStringGrid1->RowCount=1;
LineColorful=true;
Form1->ToolButton6->Enabled=false;
Form1->ToolButton7->Enabled=false;
Form1->ToolButton9->Enabled=false;
Form1->ToolButton10->Enabled=false;
Form1->suiForm1->Caption="波形处理工具";
}
}
else
{
if(Application->MessageBox("开始叠加波形", "Message", MB_YESNO)==IDYES)
{
if(Dataable==true)
{
Dataable=false;
Form1->Button1->Click();
}
if(Saveable==true)
Form1->S1->Click();
CurColor=clWhite;
Form1->Button1->Click();
//temp_path=Form1->MyPath+"\\MyTempImage.bmp";
//creat(temp_path.c_str(),S_IREAD | S_IWRITE );
temp_path="c:\\MyTempImage.bmp";
if(FileExists("c:\\MyTempImage.bmp")==false)//如果没有。bmp就创建
creat("c:\\MyTempImage.bmp",S_IREAD | S_IWRITE );
Form1->Image1->Picture->SaveToFile(temp_path);
CurColor=clBlack;
Form1->Button1->Click();
Form1->N13->Caption="单波形显示";
Standandx=trial_dis.time.scale;
Standandy=trial_dis.trial[0].scale;
//强行记录当前的比例尺
GridDisplay("Black");
MultiImage=true;
Editable=false;
Measure=0;
Dataable=false;
Pointable=false;
Coordinate=false;
Form1->Image1->Cursor=crDefault;
CrossCursor=false;
OpenFiled=false;
//Saveable=true;
Form1->N31->Enabled=true;
Form1->N32->Enabled=true;
Form1->ToolButton3->Enabled=false;
Form1->ToolButton4->Enabled=false;
/*
Form1->ToolButton6->Enabled=false;
Form1->ToolButton7->Enabled=false;
Form1->ToolButton9->Enabled=false;
Form1->ToolButton10->Enabled=false;
*/
Form1->ToolButton12->Enabled=false;
Form1->ToolButton13->Enabled=false;
Form1->ToolButton15->Enabled=false;
Form1->ToolButton16->Enabled=false;
//文件下
Form1->S1->Enabled=false;
Form1->I1->Enabled=true;
Form1->N3->Enabled=true;
Form1->N28->Enabled=false;
//编辑下
Form1->N7->Enabled=false;
Form1->N8->Enabled=false;
Form1->N26->Enabled=false;
Form1->N9->Enabled=false;
Form1->N10->Enabled=false;
//测量下
Form1->N17->Enabled=false;
Form1->N22->Enabled=false;
Form1->N24->Enabled=false;
Form1->N27->Enabled=false;
//帮助下
Form1->N15->Enabled=false;
Form1->N30->Enabled=true;
}
}
//Form1->Image1->Picture=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//int i,j;
struct data_dis *dis;
short unsigned *buff;
short int i0,x0,y,num;
register short int i,x;
short unsigned xleng,xdata;
float xf;
struct axis *xdis,*ydis;
dis=&trial_dis;
xdis=&(dis->time);
ydis=&(dis->trial[0]);
num=dis->stim_num;
xleng=(dis->time).leng;
xdata=trial->stim_data;
//dis->time.scale=trial->stim_data/dis->time.leng;
//应该是
xf=dis->time.scale;
buff=(trial->in_data_buff)[num];
if(MultiImage==false) //改变多图单图状态
{
Form1->Image1->Picture=NULL;
Form1->Image1->Canvas->Pen->Color = clBlack;
}
else
{
Image1->Picture->LoadFromFile("c:\\MyTempImage.bmp");
Form1->Image1->Canvas->Pen->Color=CurColor;
if(OpenFiled==true)//打开一个文件才进行修改
{
switch(random(6)+1)
{
case 1:
Form1->Image1->Canvas->Pen->Color = clRed;
GridDisplay("Red");
break;
case 2:
Form1->Image1->Canvas->Pen->Color = clBlue;
GridDisplay("Blue");
break;
case 3:
Form1->Image1->Canvas->Pen->Color = clGreen;
GridDisplay("Green");
break;
case 4:
Form1->Image1->Canvas->Pen->Color = clDkGray;
GridDisplay("Gray");
break;
case 5:
Form1->Image1->Canvas->Pen->Color = clYellow;
GridDisplay("Yellow");
break;
case 6:
Form1->Image1->Canvas->Pen->Color = clPurple;
GridDisplay("Purple");
break;
default:
Form1->Image1->Canvas->Pen->Color = clBlack;
}
OpenFiled=false;
CurColor=Form1->Image1->Canvas->Pen->Color;
}
/*
Form1->ToolButton4->Enabled=false;
Form1->ToolButton6->Enabled=false;
Form1->ToolButton7->Enabled=false;
Form1->ToolButton9->Enabled=false;
Form1->ToolButton10->Enabled=false;
Form1->ToolButton12->Enabled=false;
Form1->ToolButton13->Enabled=false;
Form1->ToolButton15->Enabled=false;
Form1->ToolButton16->Enabled=false;
*/
}
if(Coordinate==true){ //坐标系显示切换
Form1->Image1->Canvas->MoveTo(Image1->Left+1,(dis->trial[0]).off);
Form1->Image1->Canvas->LineTo(Image1->Left+Image1->Width-1,(dis->trial[0]).off);
draw_trial_axis_each(trial,&trial_dis,-1);
draw_trial_axis_each(trial,&trial_dis,0);
//draw_trial_axis_each(trial,&trial_dis,1);
}
if(Measure>3) //显示APD的辅助线
{
Image1->Canvas->Pen->Color=clRed;
switch(Measure-1)
{
case 3:
Image1->Canvas->MoveTo(Image1->Left+5,int(0.2*ybottom+0.8*ytop));
Image1->Canvas->LineTo(Image1->Width-5,int(0.2*ybottom+0.8*ytop));
Image1->Canvas->TextOutA(Image1->Width/2,int(0.2*ybottom+0.8*ytop)-10,
"APD20");
break;
case 4:
Image1->Canvas->MoveTo(Image1->Left+5,int(0.5*ybottom+0.5*ytop));
Image1->Canvas->LineTo(Image1->Width-5,int(0.5*ybottom+0.5*ytop));
Image1->Canvas->TextOutA(Image1->Width/2,int(0.5*ybottom+0.5*ytop)-10,
"APD50");
break;
case 5:
Image1->Canvas->MoveTo(Image1->Left+5,int(0.9*ybottom+0.1*ytop));
Image1->Canvas->LineTo(Image1->Width-5,int(0.9*ybottom+0.1*ytop));
Image1->Canvas->TextOutA(Image1->Width/2,int(0.9*ybottom+0.1*ytop)-10,
"APD90");
break;
default:
break;
}
}
//座标系
if(MultiImage==true)
{
xf=Standandx;
ydis->scale=Standandy;
if(LineColorful==false)
Image1->Canvas->Pen->Color=clBlack;
}
x0=2;
i0=time_scrntopoint(xdis,x0);
if(i0<2){
i0=2;
i=i0; //add by cao
x0=time_pointtoscrn(xdis,i);
}
x=x0;
i=i0;
y=ad_memtoscrn(ydis,buff[i]);
Form1->Image1->Canvas->MoveTo(x,y);
if(MultiImage==false)
Image1->Canvas->Pen->Color=clBlack;
if(MultiImage==false&&CurColor==clWhite)
Image1->Canvas->Pen->Color=clWhite;
while(x<xleng&&i<xdata){
y=ad_memtoscrn(ydis,buff[i]);
Form1->Image1->Canvas->LineTo(x,y);
x++;
i=(x-x0)*xf;
i+=i0;
}
Form1->Button3->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
char state_buff[16];
float fvmax;
short int apd,rp,apa,fc;
short int x0,y0,num;
if(Dataable==true){
num=trial_dis.stim_num;
//以后是否由系统计算的转换处
if(MeasureKind==true)
count_ap_fc_param(trial,num);
else
count_ap_part_param(trial,num);
Form1->Image1->Canvas->Font=Form1->Font;
fvmax=trial_ad_memtovalue(trial,trial->ap_param[num].vmax+broad_ad_zero,0);
fvmax=fvmax*1000.0/trial->sample_inter;
Form1->Image1->Canvas->TextOutA(30,280,"Vmax="+AnsiString(int(fvmax)));
rp=(int)trial_ad_memtovalue(trial,trial->ap_param[num].rp+broad_ad_zero,0);
Form1->Image1->Canvas->TextOutA(110,280,"RP="+AnsiString(rp));
apa=(int)trial_ad_memtovalue(trial,trial->ap_param[num].apa+broad_ad_zero,0);
Form1->Image1->Canvas->TextOutA(190,280,"OS="+AnsiString(apa-rp));
Form1->Image1->Canvas->TextOutA(270,280,"APA="+AnsiString(apa));
apd=trial_time_pointtovalue(trial,trial->ap_param[num].apd20);
Form1->Image1->Canvas->TextOutA(30,310,"APD20="+AnsiString(apd));
apd=trial_time_pointtovalue(trial,trial->ap_param[num].apd50);
Form1->Image1->Canvas->TextOutA(110,310,"APD50="+AnsiString(apd));
apd=trial_time_pointtovalue(trial,trial->ap_param[num].apd90);
Form1->Image1->Canvas->TextOutA(190,310,"APD90="+AnsiString(apd));
fc=(short int)trial_ad_memtovalue(trial,trial->ap_param[num].fc+broad_ad_zero,1);
Form1->Image1->Canvas->TextOutA(270,310,"FC="+AnsiString(fc));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
TControl* C;
int CC=ControlCount;
for (int i=0; i<CC; i++)
{
C=Controls[i];
C->Left=C->Left*Width/WIDTH;
C->Width=C->Width*Width/WIDTH;
C->Top=C->Top*Height/HEIGHT;
C->Height=C->Height*Height/HEIGHT;
}
HEIGHT=Height;
WIDTH=Width;
if(pf!=NULL)
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
int TForm1::ad_scrntomem(struct axis *dis,int scrn)
{
//unsigned int mem;
int mem;
float tmp;
tmp=dis->off-scrn;
mem=tmp*dis->scale;
mem+=broad_ad_zero;
return mem;
}
//--------------------------------------------------------------------------
/***********************************************************************
Count the trial parameter
***********************************************************************/
void TForm1::count_ap_fc_param(struct trialparam *data,short int cnum)
{
unsigned short *buff,*buff_fc;
int ios,delta,os,num,fcmax,fcmin,vmaxlim,fclim;
int apa20,apa50,apa90;
register int val,i;
struct apparam *ap;
buff=data->in_data_buff[cnum];
buff_fc=data->fc_data_buff[cnum];
ap=&(data->ap_param[cnum]);
num=data->stim_data;
vmaxlim=trial_ad_valuetomem(data,300.0*data->sample_inter/1000.0,0)-0x800;
fclim=trial_ad_valuetomem(data,10,1)-0x800;
delta=0;
ap->vmax=0;
ap->apa=0;
ap->apd20=0;
ap->apd50=0;
ap->apd90=0;
apa20=0;
apa50=0;
apa90=0;
fcmax=fcmin=(int)buff_fc[4];
ap->rp=0;
for(i=num-10;i<num;i++)
{
val=(int)buff[i];
ap->rp+=val;
}
ap->rp/=10;
os=ap->rp;
ios=num-1;
for(i=4;i<num;i++)
{
val=(int)buff_fc[i];
if(abs(val-(int)buff_fc[i-1])<fclim){
if((int)buff_fc[i]>fcmax)
fcmax=(int)buff_fc[i];
if((int)buff_fc[i]<fcmin)
fcmin=(int)buff_fc[i];
}
val=(int)buff[i];
if(val<ap->rp)
continue;
delta=val-(int)buff[i-1];
if(delta>vmaxlim)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -