⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 一个医学的软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			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 + -