📄 menu_1.cpp
字号:
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 + -