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

📄 menu_1.cpp

📁 吐血奉献:一套完整的DOS版软件工程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
   diffyjdrascr();
   diffyjcalpeak();
   }
 return;
}
void selinsist(int dw)
{
 int i,temp,temp_226;
 float insist;
 temp=temp_226&0x00;
 dw=temp|dw;
 outportb(0x226,dw);
}
float datasmoothweights(float *dataset,int numdat,int smoothnum,
		       float *weights,float wdivisor,float *smoothdata)
  {
  int i;
  int j;
  int k;
  int smoothdeg;
  int startconv;
  int stopconv;
  int numcpef;
  if((smoothnum>=1)&&(fmod(smoothnum,2)!=0)){
     smoothdeg=smoothnum/2;
     startconv=smoothdeg ;
     stopconv=numdat-smoothdeg-1;
     for(i=0;i<=numdat-1;++i){
	smoothdata[i]=0;
     }
   for(i=startconv;i<=stopconv;++i){
    for(j=0;j<=smoothnum-1;++j){
      smoothdata[i]=smoothdata[i]+dataset[i-smoothdeg+j]*weights[j];
    }
    smoothdata[i]=smoothdata[i]/wdivisor;
   }
   j=smoothdeg-1;
   k=numdat-smoothdeg;
   for(i=1;i<=smoothdeg;++i){
    smoothdata[j]=smoothdata[j+1];
    smoothdata[k]=smoothdata[k-1];
    j=j-1;
    k=k+1;
   }
 }
 return 0;
}
float smooth(void)
{
 float smoothdata[2000],dataset[2000];
 int i,numdat,smoothnum;
 float weights[5],wdivisor;
 numdat=count;smoothnum=5;
 weights[0]=1;weights[1]=2;weights[2]=3;weights[3]=2;weights[4]=1;
 wdivisor=9;
 for(i=0;i<=count-1;++i){
  dataset[i]=ivp[i+1].current;
 }
 datasmoothweights(dataset,numdat,smoothnum,weights,wdivisor,smoothdata);
 for(i=0;i<=count-1;++i){
  ivp[i+1].current=smoothdata[i];
 }
 return 0;
}
float smooth1(void)
{
 float smoothdata[2000],dataset[2000];
 int i,numdat,smoothnum;
 float weights[5],wdivisor;
 numdat=count-2;smoothnum=5;
 weights[0]=1;weights[1]=2;weights[2]=3;weights[3]=2;weights[4]=1;
 wdivisor=9;
 for(i=0;i<=count-3;i++){
  dataset[i]=ivd[i+1].current;
 }
 datasmoothweights(dataset,numdat,smoothnum,weights,wdivisor,smoothdata);
 for(i=0;i<=count-3;i++){
  ivd[i+1].current=smoothdata[i];
 }
 return 0;
}
void  maxfind1(void)
 {
  float min;
  int i;
  max=fabs(ivp[1].current);
  min=fabs(ivp[1].current);
  for(i=1;i<=count;i++)
   {
    if((fabs(ivp[i].current))<min) min=fabs(ivp[i].current);
    if((fabs(ivp[i].current))>max) max=fabs(ivp[i].current);
  }
  if(max==min) max=1;
  return;
 }
void disp_seat(int x,int y,int value,int color)
  {
  char *str="*****";
  itoa(value,str,10);
  disp_hz_str(x,y,str,color);
  }
int print_spara()
  {
  int l1=70,l2=140,l3=600,l4=390;
  win_board(l1-25,l2-60,l3,l4,30,7,0);
  disp_hz_str(l1+200,l2-56,"测试参数表",15);
  disp_hz_str(l1,l2-10,"实验单位:________________________ 实验人:________________",15);
  disp_hz_str(l1,l2+40,"---------------------------------------------------------",15);
  disp_hz_str(l1,l2+60,"实验日期:",15);
  disp_seat(l1+80,l2+60,te_d.te_year,15);
  disp_hz_str(l1+116,l2+60,"-",15);
  disp_seat(l1+124,l2+60,te_d.te_mon,15);
  disp_hz_str(l1+142,l2+60,"-",15);
  disp_seat(l1+150,l2+60,te_d.te_day,15);
  disp_hz_str(l1+260,l2+60,"实验时间:",15);
  disp_seat(l1+340,l2+60,te_t.te_hour,15);
  disp_hz_str(l1+360,l2+60,":",15);
  disp_seat(l1+370,l2+60,te_t.te_min,15);
  disp_hz_str(l1+390,l2+60,":",15);
  disp_seat(l1+400,l2+60,te_t.te_sec,15);
  disp_hz_str(l1,l2+80,"富集电位:",15);
  disp_seat(l1+80,l2+80,spara.fuji_v,15);
  disp_hz_str(l1+128,l2+80,"MV",15);
  disp_hz_str(l1+260,l2+80,"富集时间:",15);
  disp_seat(l1+340,l2+80,spara.fuji_t,15);
  disp_hz_str(l1+390,l2+80,"S",15);
  disp_hz_str(l1,l2+100,"起始电位:",15);
  disp_seat(l1+80,l2+100,spara.first_v,15);
  disp_hz_str(l1+128,l2+100,"MV",15);
  disp_hz_str(l1+260,l2+100,"终止电位:",15);
  disp_seat(l1+340,l2+100,spara.end_v,15);
  disp_hz_str(l1+390,l2+100,"MV",15);
  disp_hz_str(l1,l2+120,"脉冲增量:",15);
  disp_seat(l1+80,l2+120,spara.pulse,15);
  disp_hz_str(l1+128,l2+120,"MV",15);
  disp_hz_str(l1+260,l2+120,"脉冲宽度:",15);
  disp_seat(l1+340,l2+120,spara.p_width,15);
  disp_hz_str(l1+390,l2+120,"MS",15);
  disp_hz_str(l1,l2+140,"间隔时间:",15);
  disp_seat(l1+80,l2+140,spara.t_width,15);
  disp_hz_str(l1+128,l2+140,"S",15);
  disp_hz_str(l1+260,l2+140,"斜率增量:",15);
  disp_seat(l1+340,l2+140,spara.slope,15);
  disp_hz_str(l1+390,l2+140,"MV",15);
  disp_hz_str(l1,l2+160,"清洗电压:",15);
  disp_seat(l1+80,l2+160,spara.brush_v,15);
  disp_hz_str(l1+128,l2+160,"MV",15);
  disp_hz_str(l1+260,l2+160,"清洗时间:",15);
  disp_seat(l1+340,l2+160,spara.brush_t,15);
  disp_hz_str(l1+390,l2+160,"S",15);
  disp_hz_str(l1,l2+180,"静止时间:",15);
  disp_seat(l1+80,l2+180,spara.stat_t,15);
  disp_hz_str(l1+128,l2+180,"S",15);
  disp_hz_str(l1,l2+200,"扫描档位:",15);
  disp_seat(l1+80,l2+200,spara.sel_R,15);
  disp_hz_str(l1+260,l2+200,"档位倍率:",15);
  disp_seat(l1+340,l2+200,spara.sel_bl,15);
  disp_hz_str(l1,l2+220,"---------------------------------------------------------",15);
  if(print_test()<0) return(-1);
  else{
    print_2(l1-18,l2-30,l3-20,l4-10+25*sz_sys.prn,15,15);
    }
  return(0);
  }
float calpeak()
 {
 int pj,i,j,m0,n0,xx0,yy0;
 char buf[12];
  float x0,y0,x1,y1,x2,y2,b0,b1;
  int Max_x,Max_y,XWide,YHigh;
  XWide=400;
  YHigh=328;
  if(spara.first_v<spara.end_v) xx0=208;
  else xx0=206;
  yy0=400;
  j=100;pi=0;pj=0;
  for(i=1;i<(con1-1);i=i+2){ pi=pi+1;pj=pj+1;
  y1=wb[i].current;x1=wb[i].scan_v;x2=wb[i+1].scan_v;y2=wb[i+1].current;
  b1=(y1-y2)/(x1-x2);b0=(y2*x1-x2*y1)/(x1-x2);
  x0=wp[pj].scan_v;
  y0=b0+b1*x0;
  ivtop.current[pi]=wp[pj].current-y0;
  ivtop.scan_v[pi]=wp[pj].scan_v;
  if(ivtop.current[pi]<2){pi=pi-1;}
  else{
  if(ivp[1].scan_v<ivp[2].scan_v){
   m0=xx0+floor(fabs((-1600)-wp[pj].scan_v)*XWide/1800);}
  else{
   m0=xx0+floor(fabs((200)-wp[pj].scan_v)*XWide/1800);}
  if((max/pow(10,max_num))>5){
   n0=yy0-floor((wp[pj].current*YHigh)/pow(10,max_num+1));}
  if((max/pow(10,max_num))<2.5){
   n0=yy0-floor((wp[pj].current*YHigh)/(2.5*pow(10,max_num)));}
  if(((max/pow(10,max_num))>2.5)&&((max/pow(10,max_num))<5)){
    n0=yy0-floor((wp[pj].current*YHigh)/(5*pow(10,max_num)));
    }
  moveto(m0,n0-8);itoa(pi,buf,10);outtext(buf);
  j=j+20;
  }
 }
 board(1,7,16,pi+8,0,7);
 for(i=1;i<=pi;i++){
   setcolor(0);
   moveto(18,i*20+120);itoa(i,buf,10);outtext(buf);
   moveto(38,i*20+120);gcvt(ivtop.current[i],dpoint(ivtop.current[i],3),buf);outtext(buf);outtext(" NA");
   moveto(38,i*20+130);itoa(ivtop.scan_v[i],buf,10);outtext(buf);outtext(" MV");
 }
 return 0;
}
float diffcalpeak()
 {
 struct ivdtop{
 float current[20];
 int scan_v[20];
 }ivdtop;
struct wdpeak{
 float current;
 int scan_v;
 }wdp[100];
 int pj,i,j,x0,y0,m0,n0,max_num1;
 char buf[12];
 float x1,y1,y2,y3,x4,y4,y5,y6,y7;
 int XWide,YHigh;
  x1=0;y1=0;y2=0;y3=0;y4=0;y5=0;y6=0;y7=0;x4=0;
  XWide=400;
  YHigh=164;
  if(spara.first_v<spara.end_v) x0=204;
  else x0=210;
  y0=236;
  max_num1=0;
  pi=0;pj=0;
  max_num1=dpoint(max,0)-1;
  for(i=1;i<100;i++){wdp[i].current=0;wdp[i].scan_v=0;}
  for(i=1;i<20;i++){ivdtop.current[i]=0;ivdtop.scan_v[i]=0;}
  for(i=1;i<(count-12);i=i+1){
   y1=ivd[i].current;y2=ivd[i+1].current;y3=ivd[i+2].current;
   y4=ivd[i+3].current;y5=ivd[i+4].current;
   y6=ivd[i+5].current;y7=ivd[i+6].current;
   x4=ivd[i+3].scan_v;
  if(((y1<y2)&&(y2<y3)&&(y3<y4)&&(y5<y4)&&(y6<y5)&&(y7<y6))||((y2<y1)&&(y3<y2)&&(y4<y3)&&(y4<y5)&&(y5<y6)&&(y6<y7))){
    pj=pj+1; wdp[pj].current=y4;wdp[pj].scan_v=x4;}
  }
  i=1;
  do{
   do{
    do{
     y1=wdp[i].current;
     x1=wdp[i].scan_v;
     i=i+1;
     }while(y1<=0);
     if(i>pj) break;
     y2=wdp[i].current;
    }while(y2>=0);
    if(i>pj) break;
    i=i+1;
    if((y1-y2)>=0.1){
    pi=pi+1;
    ivdtop.current[pi]=(y1-y2);
    ivdtop.scan_v[pi]=x1;
   if(ivp[1].scan_v<=ivp[2].scan_v){
    m0=x0+floor(fabs((-1600)-ivdtop.scan_v[pi])*XWide/1800);}
   else{
    m0=x0+floor(fabs((200)-ivdtop.scan_v[pi])*XWide/1800);}
   if((max/pow(10,max_num1))>5){
    n0=y0-floor((y1*YHigh)/pow(10,max_num1+1));}
   if((max/pow(10,max_num1))<2.5){
    n0=y0-floor((y1*YHigh)/(2.5*pow(10,max_num1)));}
    if(((max/pow(10,max_num1))>2.5)&&((max/pow(10,max_num1))<5)){
      n0=y0-floor((y1*YHigh)/(5*pow(10,max_num1)));
      }
    moveto(m0,n0-8);itoa(pi,buf,10);outtext(buf);
 }
 }while(i<pj);
 board(1,7,16,pi+8,0,7);
 for(i=1;i<=pi;i++){
   setcolor(12);
   moveto(18,i*18+120);itoa(i,buf,10);outtext(buf);
   moveto(38,i*18+120);gcvt(ivdtop.current[i]/100,dpoint(ivdtop.current[i]/100,3),buf);outtext(buf);outtext(" NA");
   moveto(38,i*18+130);itoa(ivdtop.scan_v[i],buf,10);outtext(buf);outtext(" MV");
 }
 return 0;
}
float diffyjcalpeak()
{
struct ivdtop{
 float current[20];
 int scan_v[20];
 }ivdtop;
struct wdpeak{
 float current;
 int scan_v;
 }wdp[100];
 int pj,i,j,x0,y0,m0,n0;
 char buf[12];
 float x2,y1,y2,y3,x4,y4,y5,y6,y7;
  int XWide,YHigh;
  XWide=400;
  YHigh=164;
  if(spara.first_v<spara.end_v) x0=204;
  else x0=210;
  y0=236;
  pi=0;pj=0;
  x2=0;y1=0;y2=0;y3=0;y4=0;y5=0;y6=0;y7=0;x4=0;
  for(i=1;i<100;i++){wdp[i].current=0;wdp[i].scan_v=0;}
  for(i=1;i<20;i++){ivdtop.current[i]=0;ivdtop.scan_v[i]=0;}
  for(i=1;i<(count-12);i=i+1){
   y1=ivd[i].current;y2=ivd[i+1].current;y3=ivd[i+2].current;
   y4=ivd[i+3].current;y5=ivd[i+4].current;
   y6=ivd[i+5].current;y7=ivd[i+6].current;
   x4=ivd[i+3].scan_v;
  if(((y1<y2)&&(y2<y3)&&(y3<y4)&&(y5<y4)&&(y6<y5)&&(y7<y6))||((y2<y1)&&(y3<y2)&&(y4<y3)&&(y4<y5)&&(y5<y6)&&(y6<y7))){
    pj=pj+1; wdp[pj].current=y4;wdp[pj].scan_v=x4;}
  }
 i=0;
 do{
   do{
    do{
     y1=wdp[i].current;
     i++;
     }while(y1>=0);
     if(i>pj) break;
     y2=wdp[i].current;
     x2=wdp[i].scan_v;
    }while(y2<=0);
    if(i>pj) break;
    i=i+1;
    if((y2-y1)>=0.1){
    pi=pi+1;
    ivdtop.current[pi]=(y2-y1);
    ivdtop.scan_v[pi]=x2;
   if(ivp[1].scan_v<=ivp[2].scan_v){
    m0=x0+floor(fabs((-1600)-ivdtop.scan_v[pi])*XWide/1800);}
   else{
    m0=x0+floor(fabs((200)-ivdtop.scan_v[pi])*XWide/1800);}
   if((max/pow(10,max_num))>5){
    n0=y0-floor((y2*YHigh)/pow(10,max_num+1));}
   if((max/pow(10,max_num))<2.5){
    n0=y0-floor((y2*YHigh)/(2.5*pow(10,max_num)));}
    if(((max/pow(10,max_num))>2.5)&&((max/pow(10,max_num))<5)){
      n0=y0-floor((y2*YHigh)/(5*pow(10,max_num)));
      }
    moveto(m0,n0-8);itoa(pi,buf,10);outtext(buf);
   }
 }while(i<pj);
 board(1,7,16,pi+8,0,7);
 for(i=1;i<=pi;i++){
   setcolor(12);
   moveto(18,i*18+120);itoa(i,buf,10);outtext(buf);
   moveto(38,i*18+120);gcvt(ivdtop.current[i]/100,dpoint(ivdtop.current[i]/100,3),buf);outtext(buf);outtext(" NA");
   moveto(38,i*18+130);itoa(ivdtop.scan_v[i],buf,10);outtext(buf);outtext(" MV");
   }
 return 0;
 }
void spara_write()
  {
  char *pf;
  FILE *fp;
  int number,handle;
  _fmode=O_BINARY;
  pf=searchpath("spara.sys");
  if(pf!=NULL){
    fp=fopen("spara.sys","wb");
    fprintf(fp,"%d %d %d %d %d %d %d %d %d %d %d %d %d\n",spara.fuji_v,spara.fuji_t,spara.first_v,spara.end_v,spara.pulse,
       spara.p_width,spara.t_width,spara.slope,spara.brush_v,spara.brush_t,spara.stat_t,spara.sel_R,spara.sel_bl);
    fprintf(fp,"%d\n",count);
    fclose(fp);
    }
   else{
    handle=creat("spara.sys",S_IWRITE|S_IREAD);
    fp=fdopen(handle,"wb");
    fprintf(fp,"%d %d %d %d %d %d %d %d %d %d %d %d %d\n",spara.fuji_v,spara.fuji_t,spara.first_v,spara.end_v,spara.pulse,
      spara.p_width,spara.t_width,spara.slope,spara.brush_v,spara.brush_t,spara.stat_t,spara.sel_R,spara.sel_bl);
    fclose(fp);
    }
  return;
  }
void spara_read()
  {
  FILE *fp;
  int i,number;
  int exxt;
  fp=fopen("spara.sys","r");
  if(fp==NULL){
    spara.fuji_v=-1200;
    spara.fuji_t=60;
    spara.first_v=-1200;
    spara.end_v=0;
    spara.pulse=50;
    spara.p_width=50;
    spara.t_width=1;
    spara.slope=4;
    spara.brush_v=-50;
    spara.brush_t=60;
    spara.stat_t=30;
    spara.sel_R=6;
    spara.sel_bl=1;
    return;
    }
  fscanf(fp,"%d %d %d %d %d %d %d %d %d %d %d %d %d",&spara.fuji_v,&spara.fuji_t,&spara.first_v,&spara.end_v,&spara.pulse,&spara.p_width,&spara.t_width,
      &spara.slope,&spara.brush_v,&spara.brush_t,&spara.stat_t,&spara.sel_R,&spara.sel_bl);
  fclose(fp);
  return;
  }
void scrn_cun(void)
  {
  char *pf;
  int i=0;
  FILE *fp;
  int number,handle;
  int press_key=0;
  if(count<5){
    button("没有扫描数据!",0,0,1,0);
    return;
    }
  getdate(&d);
  gettime(&t);
  if(get_str(filename,0,0)==27) return;
  _fmode=O_BINARY;
  pf=searchpath(filename[0]);
  if(pf!=NULL){
       press_key=file_warn(2);
       if((press_key==5497)||(press_key==5465)){
	 fp=fopen(filename[0],"wb");
	 fprintf(fp,"%d\n",2);
	 fprintf(fp,"%d %d %d %d %d %d %d\n",0,d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min,t.ti_sec);
	 fprintf(fp,"%d %d %d %d %d %d %d %d %d %d %d %d %d\n",spara.fuji_v,spara.fuji_t,spara.first_v,spara.end_v,spara.pulse,
	   spara.p_width,spara.t_width,spara.slope,spara.brush_v,spara.brush_t,spara.stat_t,spara.sel_R,spara.sel_bl);
	 fprintf(fp,"%d\n",count);
	 for(i=0;i<=count-1;i++)
	   {
	   fprintf(fp," %d",ivp[i+1].scan_v);
	   fprintf(fp," %9.2f",ivp[i+1].current);
	   }
	 fclose(fp);
	 }
      }
    else{
       handle=creat(filename[0],S_IWRITE|S_IREAD);
       fp=fdopen(handle,"wb");
       if(fp==NULL){
	 file_warn(3);
	 return;
	 }
       fprintf(fp,"%d\n",2);
       fprintf(fp,"%d %d %d %d %d %d %d\n",0,d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min,t.ti_sec);
       fprintf(fp,"%d %d %d %d %d %d %d %d %d %d %d %d %d\n",spara.fuji_v,spara.fuji_t,spara.first_v,spara.end_v,spara.pulse,
	 spara.p_width,spara.t_width,spara.slope,spara.brush_v,spara.brush_t,spara.stat_t,spara.sel_R,spara.sel_bl);
       fprintf(fp,"%d\n",count);
       for(i=0;i<=count-1;i++)
	 {
	 fprintf(fp," %d",ivp[i+1].scan_v);
	 fprintf(fp," %9.2f",ivp[i+1].current);
	 }
       fclose(fp);
    }
  bell(400,1);
  return;
  }
void sys_read()
  {
  int handle;
  int i;
  char buf[11];
  char *buff[4];
  handle=open("jpy.sys",O_RDONLY|O_BINARY,S_IWRITE|S_IREAD);
  for(i=0;i<4;i++){
    _read(handle,buf,11);
    buff[i]=(char *)malloc(sizeof("123456789"));
    strcpy(buff[i],buf);
    }
  if(strncmp(buff[0],"Printer=1",9)==0) sz_sys.prn=1;
  else if(strncmp(buff[0],"Printer=2",9)==0) sz_sys.prn=2;
  else if(strncmp(buff[0],"Printer=3",9)==0) sz_sys.prn=3;
  else if(strncmp(buff[0],"Printer=4",9)==0) sz_sys.prn=4;
  else if(strncmp(buff[0],"Printer=5",9)==0) sz_sys.prn=5;
  else if(strncmp(buff[0],"Printer=6",9)==0) sz_sys.prn=6;
  else if(strncmp(buff[0],"Printer=7",9)==0) sz_sys.prn=7;
  else if(strncmp(buff[0],"Printer=8",9)==0) sz_sys.prn=8;
  else if(strncmp(buff[0],"Printer=9",9)==0) sz_sys.prn=9;
  else if(strncmp(buff[0],"Printer-1",9)==0) sz_sys.prn=-1;
  else if(strncmp(buff[0],"Printer-2",9)==0) sz_sys.prn=-2;
  else if(strncmp(buff[0],"Printer-3",9)==0) sz_sys.prn=-3;
  else if(strncmp(buff[0],"Printer-4",9)==0) sz_sys.prn=-4;
  else if(strncmp(buff[0],"Printer-5",9)==0) sz_sys.prn=-5;
  else if(strncmp(buff[0],"Printer-6",9)==0) sz_sys.prn=-6;
  else if(strncmp(buff[0],"Printer-7",9)==0) sz_sys.prn=-7;
  else if(strncmp(buff[0],"Printer-8",9)==0) sz_sys.prn=-8;
  else if(strncmp(buff[0],"Printer-9",9)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -