?? 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 + -