www.pudn.com > Wrough.rar > XC.C
#include "stdio.h"
#include "math.h"
#include "alloc.h"
#include "conio.h"
#include "graphics.h"
#include "dos.h"
#define SNO 1792
#define PVNUM 600
#define mx0 2
#define mxn 637
#define my0 40
#define myn 477
/*-----------------------------------------------------------------------*/
int ib(int j,int n);
float w_fmax(float *p,int p0,int n);
float w_fmin(float *p,int p0,int n);
float w_fc(float *a,float avg,int a0,int n);
float w_av(float *a,int a0,int n);
void w_qs(float *item,int left,int right);
void w_od(float *p,int x,int y,int n);
void gbf();
void pcf();
void mean();
void w_1724p(void);
void prt_block(int y1,int x1,int y2,int x2,int yinc, int xinc,int reverse);
int ib(int j,int n);
void w_fft(float *xr,float *xi,int n,int nu);
void w_gsf(float *xr,int n,int nu);
void dc_gsf(float *y,int n0,int n);
void rr(int sadr);
void w_spv(float *a,float *p,float *v,int *pn,int *vn,int a0,int an);
void w_s(float *p,float *v,int *pn,int *vn,int pnu);
void w_sm(float *a,float *p,float *v,int *pn,int *vn,int pnu,int vnu);
void c_s_sm(float *pp);
void rhsc(int *eh);
void rpc(int *pc,float *ma);
void w_tp(float *tp,float *c,float *adf);
void w_rzy(float *a);
void w_prt(void);
void w_1724p(void);
void gtpa(int dy);
void gdis(int dy);
void disresult(int dy);
void disstat(int dy);
void cpat( int bb);
/*-----------------------------------------------------------------------*/
extern char mu[2],enumber[16],name[16],oper[16];
extern int pc[27],eh[27]; /* pc;hsc calculate arrey */
extern int mdx,mdy; /* menu x,y */
extern int efa; /* efa=256;0*/
extern int tpb; /* tpb=0 calculate tp,tpb=99 nocalculate */
extern int ek; /* statistical analysis counter */
extern int elnu; /* 1,2,3,4,5 */
extern int evv; /* 4 mu,20 mu,100 mu,500 mu */
extern int c5; /* c5=tp%5 y*/
extern float ecl; /* cut-off=0.08,0.25,0,8,2,5,8 */
extern int fs,mf; /* fs=0:UF,1:GB,2:PC,3:GS, mf=4:Contine,5:Single */
extern long int vv; /* auto */
extern int vvk; /* 0,1,2,3,4,5,6,7,8,9,10 */
extern int vh,vhk; /* 7777:auto,0,1,2,3,4,5,6,7,8,9 */
extern int ex[SNO],pc[27],eh[27]; /* sample data */
extern unsigned int est;
extern float ey[SNO+256]; /* filter data */
extern float ma[26];
extern float sta[400]; /* statistical analysis */
extern int eln; /* sample number eln= 256 */
extern int epn,evn; /* 存峰谷数 */
extern ek; /* statics counter */
extern float tp[101],c[101],adf[101]; /*Tp曲线数据 幅度分布曲线数据*/
extern float r10,evc; /* evc=2/2048;10/2048;25/2048;250/2048 */
extern float ra,rq,da,dq,la,lq,rsk,rku,rp,rv,s,sm,rtm,rpm,rvm,rt;
extern float rz,r3y,r3z,ry; /*参数结果*/
extern char mu[2];
/*-----------------------------------------------------------------------*/
float w_fmax(float *p,int p0,int n) /* 浮点数求最大值 */
{ float max;
register int i;
max=p[p0];for(i=p0+1;ip[i]) min=p[i]; } return(min);
}
int imax(int *p,int p0,int n) /* 浮点数求最大值 */
{ int max;
register int i;
max=p[p0];for(i=p0+1;ip[i]) min=p[i]; } return(min);
}
void w_qs(float *item,int left,int right)
{ register int i,j;
float x,y;
i=left;j=right; x=item[(left+right)/2];
do { while (item[i]left) j--;
if(i<=j) { y=item[i];item[i]=item[j];item[j]=y;i++;j--; }
}
while(i<=j);if(left=an) return;goto sq;}
if(i>=an) return;
if(a[i]a[i+2])
{p[epn]=a[i+1];pn[epn]=i+1;epn++;if(++i>=an) return;goto v1;}
else {if(++i>=an) return;goto p1;}
}
else {v1:if(a[i+1]=an) return;goto p1;}
else {if(++i>=an) return;goto v1;}
}
}
/*-----------------------------------------------------------------------*/
void w_sspv(float *a,float *p,float *v,int a0,int an)
{ register int i;
int pj=0,vj=0;
float max=0,min=0;
epn=0;evn=0;i=a0;an=an-1;
sq:if((a[i]<=0)&&(a[i+1]>0)) goto pfirst;
if((a[i]>=0)&&(a[i+1]<0)) goto vfirst;
if(i++>=an) goto end;else goto sq;
pfirst:if(a[i]>max) max=a[i]; /* select signle peak */
if(i++>=an) goto end;
if(a[i]<=0) { p[pj]=max;epn++;pj++;}
else goto pfirst;
sv:if(a[i]=an) goto end;
if(a[i]>=0) { v[vj]=min;evn++;vj++;goto pfirst;}
else goto sv;
vfirst:if(a[i]=an) goto end;
if(a[i]>=0) { v[vj]=min;evn++;vj++;}
else goto vfirst;
sp:if(a[i]>max) max=a[i]; /* select signle peak */
if(i++>=an) goto end;
if(a[i]<=0) { p[pj]=max;epn++;pj++;goto vfirst;}
else goto sp;
end:return;
}
/*-----------------------------------------------------------------------*/
void w_rzy(float *a)
{register int i,j;
float rpt[5],rvt[5],rtt[5],r3yt[5],r3zt[5],z1,z2;
float *p,*v;
int *pn,*vn,j1;
p=(float*)farcalloc(PVNUM,4);if(!p) {puts("PP Error!!");exit(1);}
v=(float*)farcalloc(PVNUM,4);if(!v) {puts("VV Error!!");exit(1);}
pn=(int*)farcalloc(PVNUM,2);if(!p) {puts("PN Error!!");exit(1);}
vn=(int*)farcalloc(PVNUM,2);if(!v) {puts("VN Error!!");exit(1);}
rtm=0;rpm=0;rvm=0;r3z=0;rz=0;j=elnu;j1=elnu;
for(i=0;i=r10) {l0=pn[0];kp=1;} else spn--;t=1;}
else t=0;
begin:j=i;
vv:if((p[t]-v[j])>=(p[t]-v[i+1]))
{ if(fabs(p[t]-v[i+1])=0)&&(*p<0))||((a[m]<=0)&&(*p>0))) z++;
while(1) /*峰先*/
{if(*p>0)
{l1:if(*v>0) {p++;v++;pni--;if(--vni<=0) break;else goto l1;}
else { z++;p++;}
l2:if(--pni<=0) break;
if(*p<0) { p++;v++;vni--;goto l2;} else { z++;v++; }
if(--vni<=0) break;else goto l1;
}
else { l3:p++;v++;vni--;if(--pni<=0) break;
if(*p<0) goto l3;else { z++;goto l1; }
}
}
if(pn[pnu-1]>vn[vnu-1])
{if(((a[j1]>=0)&&(p[pnu-1]<0))||((a[j1]<=0)&&(p[pnu-1]>0))) z++;}
else {if(((a[j1]>=0)&&(v[vnu-1]<0))||((a[j1]<=0)&&(v[vnu-1]>0))) z++;}
}
else
{if(((a[m]>=0)&&(*v<0))||((a[m]<=0)&&(*v>0))) z++;} /*谷先*/
while(1)
{if(*v<0)
{l4:if(*p<0) {p++;v++;vni--;if(--pni<=0) break;else goto l4;}
else { z++;v++; }
l5:if(--vni<=0) break;
if(*v>0) {p++;v++;pni--;goto l5;} else {z++;p++;}
if(--pni<=0) break; else goto l4;
}
else {l6:v++;p++;pni--;if(--vni<=0) break;
if(*v>0) goto l6;else { z++;goto l4; }
}
}
if(pn[pnu-1]>vn[vnu-1])
{if(((a[j1]>=0)&&(p[pnu-1]<0))||((a[j1]<=0)&&(p[pnu-1]>0))) z++;}
else {if(((a[j1]>=0)&&(v[vnu-1]<0))||((a[j1]<=0)&&(v[vnu-1]>0))) z++;}
/*求第一个过零点lo,最后过零点ln*/
for(i=efa;i=0)&&(a[i+1]<0))||((a[i]<=0)&&(a[i+1]>0)))
{n1:l0=i;
if((z%2)!=0)
{ n2:if(((a[j1]>=0)&&(a[j1-1]<0))||((a[j1]<=0)&&(a[j1-1]>0)))
{ln=j1;break;}
else { j1--;if(--z1<=0) break;else goto n2;}
}
else { n4:if(((a[j1]<=0)&&(a[j1-1]>0))||((a[j1]>=0)&&(a[j1-1]<0)))
{ j1--;if(--z1<=0) break;
n5:if(((a[j1]<=0)&&(a[j1-1]>0))||((a[j1]>=0)&&(a[j1-1]<0)))
{ ln=j1;break;}
else { j1--;if(--z1<=0) break;goto n5; }
}
else { j1--;if(--z1<=0) break;goto n4; }
}
}
}
if(l0>(eln+efa)||(lnc) hn++;}
for(j=0;jc) hn--;}
if(hn<0) hn=0;
eh[n]=hn;n++;
}
re:farfree(p);farfree(v);farfree(pn);farfree(vn);
}
/*-----------------------------------------------------------------------*/
void rpc(int *pc,float *ma)
{ register int i,j;
int k,k0,pni,vni,n,n1,q;
float ub,lb,max;
float *p,*v;
int *pn,*vn;
p=(float*)farcalloc(PVNUM,4);if(!p) {puts("PP Error!!");exit(1);}
v=(float*)farcalloc(PVNUM,4);if(!v) {puts("VV Error!!");exit(1);}
pn=(int*)farcalloc(PVNUM,2);if(!pn) {puts("PN Error!!");exit(1);}
vn=(int*)farcalloc(PVNUM,2);if(!vn) {puts("VN4Error!!");exit(1);}
w_spv(ey,p,v,pn,vn,efa,eln*(elnu+efa/256));
if((epn<2)&&(evn<2)) goto re;
max=rp;n=1;n1=0;pc[0]=0;
if(pn[0]>vn[0]) k0=1;else k0=0;
for(q=0;q<=50;q++) /*q+=2*/
{ ub=max*(50-q)/50;lb=-ub;ma[n1]=fabs(2*ub);n1++;
pc[n]=0;pni=epn;vni=evn;i=0;j=k0;k=0;
l1:if(p[i]<=ub) { i++;j++;vni--;if(--pni>0) goto l1;goto l3;}
l2:if(v[j]>=lb) { i++;j++;pni--;if(--vni>0) goto l2;goto l3;}
k++;if(--pni>0) { i++;j++;goto l1;}
l3:pc[n]=k;n++;
}
re:farfree(p);farfree(v);farfree(pn);farfree(vn);
}
/*-----------------------------------------------------------------------*/
void disresult(int dy)
{register int i,j;
char ps[50],dd[2],dd1[2];
unsigned char *hs[]={"λ"};
setfillstyle(SOLID_FILL,0);bar(mx0+1,my0+25,mxn-1,myn-53);
setcolor(15);dd[1]='\0';dd[0]=127;dd1[1]='\0';dd1[0]=248;
if(evv==4)
{ sprintf(ps,"Ra = %6.3f",evc*ra);outtextxy(35,my0+80,ps);
if(rz==0) outtextxy(185,my0+80,"Rz = ");
else { sprintf(ps,"Rz = %6.3f",evc*rz);outtextxy(185,my0+80,ps);}
sprintf(ps,"Ry = %6.3f",evc*ry);outtextxy(335,my0+80,ps);
sprintf(ps,"Rq = %6.3f",evc*rq);outtextxy(485,my0+80,ps);
sprintf(ps,"Rt = %6.3f",evc*rt);outtextxy(35,my0+130,ps);
sprintf(ps,"Rtm= %6.3f",evc*rtm);outtextxy(185,my0+130,ps);
sprintf(ps,"Rp = %6.3f",evc*rp);outtextxy(35,my0+180,ps);
sprintf(ps,"Rpm= %6.3f",evc*rpm);outtextxy(185,my0+180,ps);
sprintf(ps,"Rv = %6.3f",evc*rv);outtextxy(335,my0+180,ps);
sprintf(ps,"Rvm= %6.3f",evc*rvm);outtextxy(485,my0+180,ps);
sprintf(ps,"R3y= %6.3f",evc*r3y);outtextxy(35,my0+230,ps);
sprintf(ps,"R3z= %6.3f",evc*r3z);outtextxy(185,my0+230,ps);
}
if((evv==16)||(evv==64))
{ sprintf(ps,"Ra = %6.2f",evc*ra);outtextxy(35,my0+80,ps);
if(rz==0) outtextxy(185,my0+80,"Rz = ");
else { sprintf(ps,"Rz = %6.2f",evc*rz);outtextxy(185,my0+80,ps);}
sprintf(ps,"Ry = %6.2f",evc*ry);outtextxy(335,my0+80,ps);
sprintf(ps,"Rq = %6.2f",evc*rq);outtextxy(485,my0+80,ps);
sprintf(ps,"Rt = %6.2f",evc*rt);outtextxy(35,my0+130,ps);
sprintf(ps,"Rtm= %6.2f",evc*rtm);outtextxy(185,my0+130,ps);
sprintf(ps,"Rp = %6.2f",evc*rp);outtextxy(35,my0+180,ps);
sprintf(ps,"Rpm= %6.2f",evc*rpm);outtextxy(185,my0+180,ps);
sprintf(ps,"Rv = %6.2f",evc*rv);outtextxy(335,my0+180,ps);
sprintf(ps,"Rvm= %6.2f",evc*rvm);outtextxy(485,my0+180,ps);
sprintf(ps,"R3y= %6.2f",evc*r3y);outtextxy(35,my0+230,ps);
sprintf(ps,"R3z= %6.2f",evc*r3z);outtextxy(185,my0+230,ps);
}
if(evv==256)
{ sprintf(ps,"Ra = %6.1f",evc*ra);outtextxy(35,my0+80,ps);
if(rz==0) outtextxy(185,my0+80,"Rz = ");
else { sprintf(ps,"Rz = %6.1f",evc*rz);outtextxy(185,my0+80,ps);}
sprintf(ps,"Ry = %6.1f",evc*ry);outtextxy(335,my0+80,ps);
sprintf(ps,"Rq = %6.1f",evc*rq);outtextxy(485,my0+80,ps);
sprintf(ps,"Rt = %6.1f",evc*rt);outtextxy(35,my0+130,ps);
sprintf(ps,"Rtm= %6.1f",evc*rtm);outtextxy(185,my0+130,ps);
sprintf(ps,"Rp = %6.1f",evc*rp);outtextxy(35,my0+180,ps);
sprintf(ps,"Rpm= %6.1f",evc*rpm);outtextxy(185,my0+180,ps);
sprintf(ps,"Rv = %6.1f",evc*rv);outtextxy(335,my0+180,ps);
sprintf(ps,"Rvm= %6.1f",evc*rvm);outtextxy(485,my0+180,ps);
sprintf(ps,"R3y= %6.1f",evc*r3y);outtextxy(35,my0+230,ps);
sprintf(ps,"R3z= %6.1f",evc*r3z);outtextxy(185,my0+230,ps);
}
if(sm==0) { outtextxy(335,my0+130,"Sm = ");outtextxy(485,my0+130,"S = ");}
else { sprintf(ps,"Sm = %4d",(int)sm);outtextxy(335,my0+130,ps);
sprintf(ps,"S = %4d",(int)s);outtextxy(485,my0+130,ps);
}
w_hz16(328,my0+225,0,15,hs[0]);outtextxy(343,my0+230,"a = ");
sprintf(ps,"%6.2f",la);outtextxy(375,my0+230,ps);
w_hz16(478,my0+225,0,15,hs[0]);outtextxy(493,my0+230,"q = ");
sprintf(ps,"%6.2f",la);outtextxy(525,my0+230,ps);
for(i=my0+80;i<=my0+230;i+=50)
for(j=135;j<=585;j+=150) { outtextxy(j,i,mu);outtextxy(j+10,i,"m");}
outtextxy(35,my0+280,dd);sprintf(ps,"a = %6.2f",da);
outtextxy(45,my0+280,ps);outtextxy(135,my0+280,dd1);
outtextxy(185,my0+280,dd);sprintf(ps,"q = %6.2f",dq);
outtextxy(195,my0+280,ps);outtextxy(285,my0+280,dd1);
sprintf(ps,"Sk= %7.2f",rsk);outtextxy(335,my0+280,ps);
sprintf(ps,"Rku= %7.2f",rku);outtextxy(485,my0+280,ps);
setcolor(7);line(2,myn-92,637,myn-92);line(2,myn-72,637,myn-72);
if(tpb==0) { w_tp(tp,c,adf);tpb=99;}
outtextxy(10,myn-85,"C%");outtextxy(10,myn-65,"Tp%");j=5;
for(i=40;i<640;i+=50)
{ line(i,myn-92,i,myn-52);sprintf(ps,"%3d",j);outtextxy(i+10,myn-85,ps);
sprintf(ps,"%4.1f",100*tp[j]);outtextxy(i+7,myn-65,ps);
if(j<30) j+=5;else j+=10;
}
while(1)
{ switch(bkey())
{ case 'n':
case 'N':disstat(dy);return;
case 'p':
case 'P':prt_block(0,0,455,639,2,2,0);break; /* 455=479*/
case 27:retm(dy);return;
default:break;
}
}
}
/*-----------------------------------------------------------------------*/
void disstat(int dy)
{int i,j,k;
float de;
char ps[50],dd[2],dd1[2];
unsigned char *hs[]={"参数","方差","平均值","最大值","最小值","本次值","λ"};
unsigned char *ee[]={"Ra","Rq","Ry","Rz","Rt","Rp","Rv","Rtm","R3y","R3z"};
dd[0]=127;dd[1]='\0';dd1[1]='\0';dd1[0]=248;
setfillstyle(SOLID_FILL,0);bar(mx0+1,my0+25,mxn-1,myn-53);
if(ek<=1) { retm(dy);return;}
setcolor(3);line(2,my0+48,637,my0+48);
w_hz16(40,my0+28,0,11,hs[0]);
sprintf(ps,"(%2d)",ek);outtextxy(607,my0+35,ps);
for(i=110,j=1;i<=534;i+=106,j++)
{ line(i,my0+24,i,myn-52);
if(i==110) k=i+10;else k=i;w_hz16(k+25,my0+28,0,11,hs[j]);
}
for(i=0,j=my0+60;i<10;i++,j+=18) outtextxy(30,j,ee[i]);
w_hz16(25,275,0,11,hs[6]);outtextxy(40,280,"a");
w_hz16(25,293,0,11,hs[6]);outtextxy(40,298,"q");
outtextxy(30,316,"Sm");outtextxy(30,334,"S ");
outtextxy(30,352,"Sk");outtextxy(30,370,"Rku");
outtextxy(30,388,dd);outtextxy(40,388,"a");outtextxy(70,388,dd1);
outtextxy(30,406,dd);outtextxy(40,406,"q");outtextxy(70,406,dd1);
for(i=my0+60;i<=334;i+=18) { outtextxy(70,i,mu);outtextxy(80,i,"m"); }
for(i=0,j=0,k=my0+60;i<18;i++,j+=20,k+=18)
{ if(evv==4)
{ de=w_av(sta,j,ek);sprintf(ps,"%6.3f",w_fc(sta,de,j,ek));
outtextxy(135,k,ps);sprintf(ps,"%6.3f",de);outtextxy(241,k,ps);
sprintf(ps,"%6.3f",w_fmax(sta,j,ek));outtextxy(348,k,ps);
sprintf(ps,"%6.3f",w_fmin(sta,j,ek));outtextxy(453,k,ps);
sprintf(ps,"%6.3f",sta[j+19]);outtextxy(559,k,ps);
}
if((evv==16)||(evv==64))
{ de=w_av(sta,j,ek);sprintf(ps,"%6.2f",w_fc(sta,de,j,ek));
outtextxy(135,k,ps);sprintf(ps,"%6.2f",de);outtextxy(241,k,ps);
sprintf(ps,"%6.2f",w_fmax(sta,j,ek));outtextxy(348,k,ps);
sprintf(ps,"%6.2f",w_fmin(sta,j,ek));outtextxy(453,k,ps);
sprintf(ps,"%6.2f",sta[j+19]);outtextxy(559,k,ps);
}
if(evv==256)
{ de=w_av(sta,j,ek);sprintf(ps,"%6.2f",w_fc(sta,de,j,ek));
outtextxy(135,k,ps);sprintf(ps,"%6.2f",de);outtextxy(241,k,ps);
sprintf(ps,"%6.1f",w_fmax(sta,j,ek));outtextxy(348,k,ps);
sprintf(ps,"%6.1f",w_fmin(sta,j,ek));outtextxy(453,k,ps);
sprintf(ps,"%6.1f",sta[j+19]);outtextxy(559,k,ps);
}
}
while(1)
{ switch(bkey())
{ case 'n':
case 'N':gdis(dy);return;
case 'p':
case 'P':prt_block(0,0,455,639,2,2,0);break;/* 455=479*/
case 27:retm(dy);return;
default:break;
}
}
}
/*-----------------------------------------------------------------------*/
void gdis(int dy)
{ register int i,j;
int st0=0,stn=255,n=1;
char ps[40];
unsigned char *hs[]={"轮廓图形"};
setfillstyle(SOLID_FILL,0);bar(mx0+1,my0+25,mxn-1,myn-53);
setcolor(12);setfillstyle(SOLID_FILL,11);
w_hz16(280,my0+60,16,11,hs[0]);
for(i=st0+efa,j=94;i120)
{ y1-=4;i1-=2;de=(rt*i1)/100;he=rt/2-de;j--;}
if(y2>120) { y2-=2;y3+=2;k--;}
if(x1>62) { x1-=4;i-=2;}
putchar(7);gtp1(i,j,k,x1,y1,y2,y3,de,he);break;
case 80:if(y1<320)
{ y1+=4;i1+=2;de=(rt*i1)/100;he=rt/2-de;j++;}
if(y2<220) { y2+=2;y3-=2;k++;}
if(x1<256) { x1+=4;i+=2;}
putchar(7);gtp1(i,j,k,x1,y1,y2,y3,de,he);break;
case 'p':prt_block(0,0,455,639,2,2,0);break;/* 455=479*/
case 27 :retm(dy);return;
case 'N':
case 'n':/*
if((elnu==5)&&(evv==20)&&(((int)(ecl*10)==8)||((int)(ecl*10)==25)))
gtp5(dy);
else disresult(dy);*/
disresult(dy);return;
default:break;
}
}
}
/*-----------------------------------------------------------------------*/
void w_prt(void)
{ char ps[20];
struct date today;
getdate(&today);
if(fs==0) strcpy(ps,"UN");if(fs==1) strcpy(ps,"ISO ");
if(fs==2) strcpy(ps,"PC");if(fs==3) strcpy(ps,"G S");
fprintf(stdprn,"\n-------------------------------------------------------------------------");
fprintf(stdprn,"\n| No:%-10s| Name:%-10s|Operator:%-10s| Date:%4d.%3d.%3d |",enumber,name,oper,today.da_year,today.da_mon,today.da_day);
fprintf(stdprn,"\n|-----------------------------------------------------------------------|");
fprintf(stdprn,"\n| |");
if(evv==4)
{ if(rz==0) fprintf(stdprn,"\n| Ra=%6.3f ym Rz= ym Sk=%6.3f |",evc*ra,rsk);
else fprintf(stdprn,"\n| Ra=%6.3f ym Rz=%6.3f ym Sk=%6.3f ym |",evc*ra,evc*rz,rsk);
}
if((evv==16)||(evv==64))
{ if(rz==0) fprintf(stdprn,"\n| Ra=%6.2f ym Rz= ym Sk=%6.2f ym |",evc*ra,rsk);
else fprintf(stdprn,"\n| Ra=%6.2f ym Rz=%6.2f ym Sk=%6.2f ym |",evc*ra,evc*rz,rsk);
}
if(evv==256)
{ if(rz==0) fprintf(stdprn,"\n| Ra=%6.1f ym Rz= ym Sk=%6.1f ym |",evc*ra,rsk);
else fprintf(stdprn,"\n| Ra=%6.1f ym Rz=%6.1f ym Sk=%6.1f ym |",evc*ra,evc*rz,rsk);
}
fprintf(stdprn,"\n| |");
if(evv==4)
{ if(sm==0) fprintf(stdprn,"\n| Ry=%6.3f ym S = ym Sm= ym |",evc*ry);
else fprintf(stdprn,"\n| Ry=%6.3f ym S =%6d ym Sm=%6d ym |",evc*ry,(int)s,(int)sm);
}
if((evv==16)||(evv==64))
{ if(sm==0) fprintf(stdprn,"\n| Ry=%6.2f ym S = ym Sm= ym |",evc*ry);
else fprintf(stdprn,"\n| Ry=%6.2f ym S =%6d ym Sm=%6d ym |",evc*ry,(int)s,(int)sm);
}
if(evv==256)
{ if(sm==0) fprintf(stdprn,"\n| Ry=%6.2f ym S = ym Sm= ym |",evc*ry);
else fprintf(stdprn,"\n| Ry=%6.1f ym S =%6d ym Sm=%6d ym |",evc*ry,(int)s,(int)sm);
}
fprintf(stdprn,"\n| |");
fprintf(stdprn,"\n|-----------------------------------------------------------------------|");
fprintf(stdprn,"\n| Filter:%-11s | L: %3.2fmm *%2d | Range: %3d ym |",ps,ecl,elnu,evv);
fprintf(stdprn,"\n-------------------------------------------------------------------------\n\n\n");
}
void w_prk(void) /* 1600k print */
{ char ps[20];
struct date today;
getdate(&today);
if(fs==0) strcpy(ps,"非滤波");if(fs==1) strcpy(ps,"国 标");
if(fs==2) strcpy(ps,"相位校正");if(fs==3) strcpy(ps,"高 斯");
fprintf(stdprn,"\n-------------------------------------------------------------------------------");
fprintf(stdprn,"\n| 编 号:%-10s| 工件名:%-10s|操作者:%-10s| 日 期:%4d.%3d.%3d |",enumber,name,oper,today.da_year,today.da_mon,today.da_day);
fprintf(stdprn,"\n|-----------------------------------------------------------------------------|");
fprintf(stdprn,"\n| |");
if(evv==4)
{ if(rz==0) fprintf(stdprn,"\n| Ra=%7.3f μm Rz= μm Sk=%6.3f |",evc*ra,rsk);
else fprintf(stdprn,"\n| Ra=%6.3f μm Rz=%6.3f μm Sk=%6.3f μm |",evc*ra,evc*rz,rsk);
}
if((evv==16)||(evv==64))
{ if(rz==0) fprintf(stdprn,"\n| Ra=%7.2f μm Rz= μm Sk=%7.2f |",evc*ra,rsk);
else fprintf(stdprn,"\n| Ra=%7.2f μm Rz=%7.2f μm Sk=%8.2f |",evc*ra,evc*rz,rsk);
}
if(evv==256)
{ if(rz==0) fprintf(stdprn,"\n| Ra=%8.1f μm Rz= μm Sk=%6.1f |",evc*ra,rsk);
else fprintf(stdprn,"\n| Ra=%8.1f μm Rz=%8.1f μm Sk=%8.1f |",evc*ra,evc*rz,rsk);
}
fprintf(stdprn,"\n| |");
if(evv==4)
{ if(sm==0) fprintf(stdprn,"\n| Ry=%6.3f μm S = μm Sm= μm |",evc*ry);
else fprintf(stdprn,"\n| Ry=%6.3f μm S =%6d μm Sm=%6d μm |",evc*ry,(int)s,(int)sm);
}
if((evv==16)||(evv==64))
{ if(sm==0) fprintf(stdprn,"\n| Ry=%6.2f μm S = μm Sm= μm |",evc*ry);
else fprintf(stdprn,"\n| Ry=%6.2f μm S =%6d μm Sm=%6d μm |",evc*ry,(int)s,(int)sm);
}
if(evv==256)
{ if(sm==0) fprintf(stdprn,"\n| Ry=%6.2f μm S = μm Sm= μm |",evc*ry);
else fprintf(stdprn,"\n| Ry=%6.1f μm S =%6d μm Sm=%6d μm |",evc*ry,(int)s,(int)sm);
}
fprintf(stdprn,"\n| |");
fprintf(stdprn,"\n|-----------------------------------------------------------------------------|");
fprintf(stdprn,"\n| 滤波器:%-11s | 评定长度: %3.2fmm *%2d | 测量范围: %3d μm |",ps,ecl,elnu,evv);
fprintf(stdprn,"\n-------------------------------------------------------------------------------\n\n\n");
}
/*-----------------------------------------------------------------------*/
void w_pre(int rhbz)
{ char ps[100];
int i,k;
unsigned char *hs[]={"打印","返回","删除本次统计数据","统计数据已经删除"};
mwd(100,200,440,150,3,12);setcolor(15);
if(evv==4)
{ sprintf(ps,"Ra = %5.3f",evc*ra);outtextxy(130,230,ps);
if(rz==0) outtextxy(270,230,"Rz = ");
else { sprintf(ps,"Rz = %5.3f",evc*rz);outtextxy(270,230,ps); }
sprintf(ps,"Sk = %5.3f",rsk);outtextxy(410,230,ps);
sprintf(ps,"Ry = %5.3f",evc*ry);outtextxy(130,270,ps);
}
if((evv==16)||(evv==64))
{ sprintf(ps,"Ra = %5.2f",evc*ra);outtextxy(130,230,ps);
if(rz==0) outtextxy(270,230,"Rz = ");
else { sprintf(ps,"Rz = %5.3f",evc*rz);outtextxy(270,230,ps); }
sprintf(ps,"Sk = %5.2f",rsk);outtextxy(410,230,ps);
sprintf(ps,"Ry = %5.2f",evc*ry);outtextxy(130,270,ps);
}
if(evv==256)
{ sprintf(ps,"Ra = %5.1f",evc*ra);outtextxy(130,230,ps);
if(rz==0) outtextxy(270,230,"Rz = ");
else { sprintf(ps,"Rz = %5.3f",evc*rz);outtextxy(270,230,ps); }
sprintf(ps,"Sk = %5.1f",rsk);outtextxy(410,230,ps);
sprintf(ps,"Ry = %5.1f",evc*ry);outtextxy(130,270,ps);
}
if(s==0) outtextxy(270,270,"S = ");
else { sprintf(ps,"S = %4d",(int)s);outtextxy(270,270,ps);}
if(sm==0) outtextxy(410,270,"Sm = ");
else { sprintf(ps,"Sm = %4d",(int)sm);outtextxy(410,270,ps);}
for(i=0,k=220;i<3;i++,k+=140)
{ outtextxy(k,230,mu);outtextxy(k+10,230,"m");
outtextxy(k,270,mu);outtextxy(k+10,270,"m");
} bar(500,230,520,250);
setcolor(14);outtextxy(140,320,"P:");w_hz16(165,315,0,15,hs[0]);
outtextxy(220,320,"ESC:");w_hz16(270,315,0,15,hs[1]);
outtextxy(340,320,"D:");w_hz16(365,315,0,15,hs[2]);
if(ek>=18) ek=0;
ek++;
if(rhbz==99) {if(mf==5) dreturn();} /* pick up auto return */
while(1)
{ switch(bkey())
{ case 'D':
case 'd':ek--;putch(7);putch(7);w_hz16(250,290,0,0,hs[3]);break;
case 'P':
case 'p':w_prk();break;
case 27 : mwd(100,200,440,150,1,1);return;
default:break;
}
}
}
/*-----------------------------------------------------------------------*/