?? unit1.~cpp
字號:
continue;
if(delta>ap->vmax){
ap->vmax=delta;
}
if(val>os){
os=val;
ios=i;
ap->apa=os-ap->rp;
apa20=os-ap->apa/5;
apa50=os-ap->apa/2;
apa90=os-ap->apa*0.9;
continue;
}
if(val>apa20){
ap->apd20=i;
}
else if(val>apa50){
ap->apd50=i;
}
else if(val>apa90){
ap->apd90=i;
}
}
ap->apd20-=ios;
//ap->apd20 = (int)trial_ad_memtovalue(data,ap->apd20,cnum)-(int)trial_ad_memtovalue(data,ios,cnum);
ap->apd50-=ios;
ap->apd90-=ios;
ap->fc=fcmax-fcmin;
}
//---------------------------------------------------------------------------
void TForm1::count_ap_part_param(struct trialparam *data,short int cnum)
{
unsigned short *buff,*buff_fc;
int ios,delta,os,num,fcmax,fcmin,vmaxlim,fclim;
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;
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)
continue;
if(delta>ap->vmax){
ap->vmax=delta;
}
/*
if(val>os){
os=val;
ios=i;
continue;
}
*/
}
ap->fc=fcmax-fcmin;
}
//---------------------------------------------------------------------------
/***********************************************************************
Fill the blank in the data file
***********************************************************************/
void TForm1::ffill(char c,long count,FILE *pf)
{
register i;
if(count<=0)
return;
for(i=0;i<count;i++)
if(putc(c,pf)==EOF){
printf("write file fail./n");
return;
}
}
//---------------------------------------------------------------------------
/***********************************************************************
Change the Memory data into the Actually value
***********************************************************************/
float TForm1::trial_ad_memtovalue(struct trialparam *data,int mem,short int num)
{
float r;
//r=((int)mem-broad_ad_zero)*broad_ad_each_bit/(data->inch[num]).gain;
r=1/data->inch[num].gain*((int)mem-broad_ad_zero)*broad_ad_each_bit
return r;
}
//---------------------------------------------------------------------------
short int TForm1::trial_time_valuetoscrn(struct trialparam *data,struct axis *dis,float time)
{
unsigned point;
point=trial_time_valuetopoint(data,time);
return time_pointtoscrn(dis,point);
}
//---------------------------------------------------------------------------
/***********************************************************************
Change the screen Point to Actually value
***********************************************************************/
float TForm1::trial_time_pointtovalue(struct trialparam *data,int point)
{
return point/1000.0*data->sample_inter;
}
//---------------------------------------------------------------------------
short unsigned TForm1::trial_ad_valuetomem(struct trialparam *data,float value,short int num)
{
short int r;
//r=(short int)(value*data->inch[num].gain/broad_ad_each_bit)+broad_ad_zero;
r=broad_ad_zero+data->inch[num].gain*value/broad_ad_each_bit;
return (short unsigned)r;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton15Click(TObject *Sender)
{
if(trial_dis.time.scale>1)
trial_dis.time.scale--;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton16Click(TObject *Sender)
{
trial_dis.time.scale++;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton12Click(TObject *Sender)
{
if(trial_dis.trial[0].scale>1)
trial_dis.trial[0].scale--;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton13Click(TObject *Sender)
{
trial_dis.trial[0].scale++;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton9Click(TObject *Sender)
{
trial_dis.time.off+=10;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton10Click(TObject *Sender)
{
trial_dis.time.off-=10;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton6Click(TObject *Sender)
{
trial_dis.trial[0].off-=10;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton7Click(TObject *Sender)
{
trial_dis.trial[0].off+=10;
Form1->Button1->Click();
}
//---------------------------------------------------------------------------
/****************************************************************************
Initialize the parameter of trial
****************************************************************************/
void TForm1::ini_dis_trial(void)
{
trial_dis.curse=0;
trial_dis.time.leng=Image1->Width;//原為500,改為Image1->Width
trial_dis.time.scale=trial->stim_data/trial_dis.time.leng;
trial_dis.time.off=0;
trial_dis.time.inc=25;
trial_dis.trial[0].leng=Image1->Height;//原為384,改為Image1->Height
trial_dis.trial[0].scale=0x1000/trial_dis.trial[0].leng;
trial_dis.trial[0].off=0.5*Image1->Height;//原來是100,改為圖像中間
trial_dis.trial[0].inc=30;
trial_dis.trial[1].leng=384;
trial_dis.trial[1].scale=0x1000/trial_dis.trial[1].leng;
trial_dis.trial[1].off=384-92;
trial_dis.trial[1].inc=30;
}
//---------------------------------------------------------------------------
/****************************************************************************
Change trial_time value into screen value
****************************************************************************/
short unsigned TForm1::trial_time_valuetopoint(struct trialparam *data,float time)
{
return (short unsigned)(time*1000.0/data->sample_inter+0.5);
}
//---------------------------------------------------------------------------
float TForm1::da_scrntovalue(struct axis *dis,int scrn)
{
float value;
value=(dis->off-scrn)*dis->scale;
return value;
}
//---------------------------------------------------------------------------
/****************************************************************************
When Mouse_up from Image,Modify the data in the image
****************************************************************************/
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
short unsigned temp,real;
//short int xtop,ytop,xbottom,ybottom;
short int i,i0,x0;
struct axis *xdis,*ydis;
struct data_dis *dis;
if(MultiImage==false&&OpenFiled==true)//多圖狀況下不能點擊
{
if(Editable==true){
dis=&trial_dis;
xdis=&(dis->time);
ydis=&(dis->trial[0]);
x0=0;
i0=time_scrntopoint(xdis,x0);
//處理圖像
if(Pointable==true)
{
i=(X-x0)*dis->time.scale+i0;
temp=ad_scrntomem(ydis,Y);
aheadx=X;
i=(X-x0)*dis->time.scale+i0;
aheady=trial->in_data_buff[trial_dis.stim_num][i];
trial->in_data_buff[trial_dis.stim_num][i]=temp;
}
else
{
switch(imageclick)
{
case 2:
ximagefirst=X;
yimagefirst=Y;
imageclick--;
Form1->suiStatusBar1->Panels->Items[0]->Text="編輯狀態_局部編輯 請確定結束點";
break;
case 1:
ximagelast=X;
yimagelast=Y;
i=(ximagelast-x0)*dis->time.scale+i0;
real=trial->in_data_buff[trial_dis.stim_num][i];
temp=ad_scrntomem(ydis,Y);
imagedelta=real-temp;
for(int j=((ximagefirst-x0)*dis->time.scale+i0);j<i;j++)
trial->in_data_buff[trial_dis.stim_num][j]-=imagedelta;
imageclick=2;
Form1->suiStatusBar1->Panels->Items[0]->Text="編輯狀態_局部編輯 請確定起始點";
break;
default:
break;
}
}
Form1->N26->Enabled=true;
//BackSpace=true;
}
else
{
//測量狀態,處理所有的測量數據
//trial->ap_param[0].vmax=Y;
switch(Measure)
{
case 0:
break;
case 1:
yrp=Y;
trial->ap_param[0].rp=(Y-(trial_dis.trial[0]).off)*trial_dis.trial[0].scale;
Form1->suiStatusBar1->Panels->Items[0]->Text="測量狀態 測量OS值";
Form1->N20->Enabled=true;
Measure=2;
break;
case 2://測量最低點
xtop=X;
ytop=Y;
trial->ap_param[0].apa=(yrp-ytop)*trial_dis.trial[0].scale;
Form1->N19->Enabled=true;
Form1->suiStatusBar1->Panels->Items[0]->Text="測量狀態 測量波形起始點";
Measure=3;
break;
case 3://測量最高點
xbottom=X;
ybottom=Y;
Form1->APD201->Enabled=true;
//trial->ap_param[0].rp=(ybottom-(trial_dis.trial[0]).off)*trial_dis.trial[0].scale;
Form1->suiStatusBar1->Panels->Items[0]->Text="測量狀態 測量APD20";
Measure=4;
break;
case 4://測量APD20
trial->ap_param[0].apd20=(X-xbottom)*trial_dis.time.scale;
Form1->APD501->Enabled=true;
Form1->suiStatusBar1->Panels->Items[0]->Text="測量狀態 測量APD50";
Measure=5;
break;
case 5://測量APD50
trial->ap_param[0].apd50=(X-xbottom)*trial_dis.time.scale;
Form1->APD1->Enabled=true;
Form1->suiStatusBar1->Panels->Items[0]->Text="測量狀態 測量APD90";
Measure=6;
break;
case 6://測量APD90
trial->ap_param[0].apd90=(X-xbottom)*trial_dis.time.scale;
Form1->APD1->Enabled=false;
Form1->N19->Enabled=false;
Form1->N20->Enabled=false;
Form1->APD201->Enabled=false;
Form1->APD501->Enabled=false;
Form1->RP1->Enabled=true;
Form1->ToolButton6->Enabled=true;
Form1->ToolButton7->Enabled=true;
Form1->ToolButton9->Enabled=true;
Form1->ToolButton10->Enabled=true;
Form1->ToolButton12->Enabled=true;
Form1->ToolButton13->Enabled=true;
Form1->ToolButton15->Enabled=true;
Form1->ToolButton16->Enabled=true;
Form1->suiStatusBar1->Panels->Items[0]->Text="顯示狀態";
Measure=0;
break;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -