📄 cut1024.c
字号:
else
tmpbuf[j]=' ';
tmpbuf[maxlen]='\0';
count=count+maxlen;
}
/*
if(i==5) ilength=atoi(tmpbuf);
if(i==7) sprintf(tmpbuf,"%3d",lmtspeedcal(ilength));
*/
drwstr(tmpbuf,x+3,y+4,1,1,fcolor,SET);
}
}
int lmtspeedcal(int ilen)
{double knifecircle;
double lengthref;
double synangle;
double lengthgap;
double synlength;
double lmtwidth;
double heigthtemp;
double shearlength;
double topwtemp;
double width;
double ktemp;
double knifemaxspeed;
double lmtacc;
double k1,k2,k;
if(ilen>9999) return iSPD;
if(ilen<500) return 0;
knifecircle=dCIR*10.0;
lengthref=ilen*10.0;
shearlength=dANG/360.0*knifecircle;
lengthgap=lengthref-knifecircle;
synangle=dSYN;
knifemaxspeed=dMAX*knifecircle*10.0/6.0/dRAT;
lmtacc=dACC;
if(lengthref<knifecircle)
synangle=90.0-0.015*(knifecircle-lengthref);
synlength=knifecircle*synangle/360.0;
lmtwidth=2.0*knifecircle-shearlength-synlength;
if(lengthref>lmtwidth)
{width=lmtwidth-shearlength-synlength;
heigthtemp=1.0;
topwtemp=lengthref-lmtwidth;
}
else
{width=lengthref-shearlength-synlength;
heigthtemp=2.0*lengthgap/width;
topwtemp=0;
}
ktemp=3.0*heigthtemp/width;
if(lengthref<knifecircle-200.0)
{ k1=knifemaxspeed/(1.0-heigthtemp);
k2=sqrt(-1000.0*lmtacc/ktemp);
k=max(k1,k2);
}
else if(lengthref>knifecircle+200.0)
{ k1=knifemaxspeed;
k2=sqrt(1000.0*lmtacc/ktemp);
k=min(k1,k2);
}
else
k=0.9*knifemaxspeed;
return min((int)(0.5+6.0*k/1000.0),iSPD);
}
int inputorder(char *str)
{
int i,x,y,xn,yn,x0,y0,j,k;
int maxlen,count,m;
int ii;
x=8;
y=510;
xn=791;
yn=535;
strcpy(tmpbuf,"ordertmp.pcx");
pcxmake(x,y,xn,yn,tmpbuf);
drwfillbox(SET,WHITE,x,y,xn,yn);
drwbox(SET,GREEN,x,y,xn,yn);
strcpy(buffer,"定单输入");
drwhzstr(buffer,x+2,y+4,1,1,RED,XOR);
for(i=0;i<70;i++)
str[i]=' ';
str[70]='\0';
count=0;
for(i=0;i<7;i++)
{maxlen=4;
if(i==1) maxlen=6;
else if(i==2) maxlen=42;
else if(i==6) maxlen=6;
ii=i;
x0=xorder[i];
y0=y+2;
j=readstr(x0,y0,maxlen,buffer,ii);
m=strlen(buffer);
if(j==27)
{strcpy(buffer,"请确认是否需要取消输入定单?");
msgbox(buffer,0,1);
i=7;
}
if(j==ENTER)
{if(i==4)
{if(atoi(buffer)>iPOS)
{strcpy(buffer,"设定剖数太大!");
msgbox(buffer,0,1);
i--;
}
else
{for(k=0;k<m;k++)
str[count+k]=buffer[k];
count=count+maxlen;
}
}
else if(i==5)
{if(atoi(buffer)<500)
{strcpy(buffer,"设定长度太短!");
msgbox(buffer,0,1);
i--;
}
else
{for(k=0;k<m;k++)
str[count+k]=buffer[k];
count=count+maxlen;
}
}
else if(i==6)
{if(_atold(buffer)<1.0)
{strcpy(buffer,"设定数量太少!");
msgbox(buffer,0,1);
i--;
}
else
{for(k=0;k<m;k++)
str[count+k]=buffer[k];
count=count+maxlen;
}
}
else
{for(k=0;k<m;k++)
str[count+k]=buffer[k];
count=count+maxlen;
}
}
else
i--;
}
pcxput(SET,x,y,tmpbuf);
return j;
}
void waitbox(char *msg,int ikey,int hzok)
{int ilen,kk;
int x,y,xn,yn;
time_t tst,ted;
ilen=strlen(msg);
if(ilen<25) ilen=25;
x=400-ilen*4-7;
y=300-26;
xn=400+ilen*4+7;
yn=300+26;
strcpy(tmp1,"waittmp.pcx");
pcxmake(x,y,xn,yn,tmp1);
drwfillbox(SET,GRAY,x,y,xn,yn);
drwfillbox(SET,YELLOW,x+2,y+2,xn-2,yn-2);
if(hzok==1)
drwhzstr(msg,x+7,y+7,1,1,RED,XOR);
else
drwstr(msg,x+7,y+7,1,1,RED,XOR);
if(ikey==0)
{strcpy(buf1,"OK");
drwfillbox(SET,BLUE,400-21,300+3,400+21,300+19);
drwbox(XOR,RED,400-21,300+3,400+21,300+19);
drwstr(buf1,400-16,300+3,1,2,GREEN,XOR);
}
else if(ikey==1)
{strcpy(buf1,"YES");
drwfillbox(SET,BLUE,400-21-10-58,300+3,400-21-10,300+19);
drwbox(XOR,RED,400-21-10-58,300+3,400-21-10,300+19);
drwstr(buf1,400-21-10-53,300+3,1,2,GREEN,XOR);
strcpy(buf1,"NO");
drwfillbox(SET,BLUE,400+21+10,300+3,400+21+68,300+19);
drwbox(XOR,RED,400+21+10,300+3,400+21+68,300+19);
drwstr(buf1,400+21+10+13,300+3,1,2,GREEN,XOR);
}
time(&tst);
ikey=TRUE;
kk=0;
while(ikey)
{time(&ted);
kk++;
if(kk>2000) break;
if(kbhit()) break;
if(fabs(difftime(ted,tst))>0.0)
ikey=FALSE;
}
pcxput(SET,x,y,tmp1);
}
int msgbox(char *msg,int ikey,int hzok)
{int ilen;
int x,y,xn,yn;
ilen=strlen(msg);
if(ilen<25) ilen=25;
x=400-ilen*4-7;
y=300-26;
xn=400+ilen*4+7;
yn=300+26;
strcpy(tmp1,"msgtmp.pcx");
pcxmake(x,y,xn,yn,tmp1);
drwfillbox(SET,GRAY,x,y,xn,yn);
drwfillbox(SET,YELLOW,x+2,y+2,xn-2,yn-2);
if(hzok==1)
drwhzstr(msg,x+7,y+7,1,1,RED,XOR);
else
drwstr(msg,x+7,y+7,1,1,RED,XOR);
if(ikey==0)
{strcpy(buf1,"OK");
drwfillbox(SET,BLUE,400-21,300+3,400+21,300+19);
drwbox(XOR,RED,400-21,300+3,400+21,300+19);
drwstr(buf1,400-16,300+3,1,2,GREEN,XOR);
}
else if(ikey==1)
{strcpy(buf1,"YES");
drwfillbox(SET,BLUE,400-21-10-58,300+3,400-21-10,300+19);
drwbox(XOR,RED,400-21-10-58,300+3,400-21-10,300+19);
drwstr(buf1,400-21-10-53,300+3,1,2,GREEN,XOR);
strcpy(buf1,"NO");
drwfillbox(SET,BLUE,400+21+10,300+3,400+21+68,300+19);
drwbox(XOR,RED,400+21+10,300+3,400+21+68,300+19);
drwstr(buf1,400+21+10+13,300+3,1,2,GREEN,XOR);
}
ikey=getkey();
pcxput(SET,x,y,tmp1);
return ikey;
}
int readstr(int x,int y,int maxlen,char *str,int cc)
{ int count,i,xn,yn;
int x0,y0;
readbuf[1]='\0';
count=0;
xn=x+8*maxlen+4;
yn=y+16+4;
drwbox(SET,GRAY,x,y,xn-1,yn-1);
drwbox(SET,WHITE,x+1,y+1,xn,yn);
drwfillbox(SET,lYELLOW,x+2,y+2,xn-2,yn-2);
while(count<maxlen)
{ x0=x+2+count*8;
y0=y+2;
xn=x0+8;
yn=y0+16;
drwfillbox(SET,RED,x0,y0,xn,yn);
i=getkey();
if(i==ESC)
{ str[0]='\0';
return i;
}
else if(i==ENTER)
{ str[count]='\0';
return i;
}
else if(i==BACKSPACE)
{ if(count>0)
{ drwfillbox(SET,lYELLOW,x0,y0,xn,yn);
count--;
str[count]='\0';
}
}
else if((cc>=4)&&(cc<=6))
{if((i>47)&&(i<58))
{
str[count++]=(char)i;
str[count]='\0';
readbuf[0]=(char)i;
drwstr(readbuf,x0,y0,1,1,BLUE,SET);
}
}
else if((cc>=0)&&(cc<=3))
{if(i>' ')
{str[count++]=(char)i;
str[count]='\0';
readbuf[0]=(char)i;
drwstr(readbuf,x0,y0,1,1,BLUE,SET);
}
}
}
return ENTER;
}
int getkey(void)
{ union REGS in,out;
in.h.ah=0x8;
int86(0x21,&in,&out);
if(out.h.al==0)
return getkey()+128;
else
return out.h.al;
}
void drwstr(char *s,int x,int y,int m,int n,int col,int mode)
{ unsigned char dot[16][2];
long offset1;
register i,j,k,mm,nn,mask;
while(*s)
{ offset1=(long)(*s)*16;
s+=1;
j=0;
for(i=0;i<=15;i++)
{ dot[i][j]=ASC16[offset1+i];
mask=0x80;
for(k=0;k<=7;k++)
{if (dot[i][j]&mask)
{for(nn=0;nn<n;nn++)
{for(mm=0;mm<m;mm++)
drwpoint(mode,col,x+(j*8+k)*n+nn,y+i*m+mm);
}
}
mask=mask>>1;
}
}
x+=8*n;
}
}
int drwhzstr(char *s,int x,int y,int m,int n,
int col,int mode)
{ unsigned char dot[16][2],qm,wm;
long offset1;
register i,j,k,mm,nn,mask;
FILE *fpHZ;
if((fpHZ=fopen("hzk16","rb"))==0)
{printf("Error: HZK16 can't open.\n");
return FALSE;
}
while(*s)
{ qm=(unsigned char)(s[0]-0xa1);
s+=1;
wm=(unsigned char)(s[0]-0xa1);
offset1=((long)qm*94+(long)wm)*32;
s+=1;
fseek(fpHZ,offset1,SEEK_SET);
for(i=0;i<=15;i++)
{for(j=0;j<2;j++)
{ dot[i][j]=(unsigned char)fgetc(fpHZ);
mask=0x80;
for(k=0;k<=7;k++)
{if (dot[i][j]&mask)
{for(nn=0;nn<n;nn++)
{for(mm=0;mm<m;mm++)
drwpoint(mode,col,x+(j*8+k)*n+nn,y+i*m+mm);
}
}
mask=mask>>1;
}
}
}
x+=16*n;
}
fclose(fpHZ);
}
void drwbutton(char *phstr,char *str,int x,int y,PixelMode i,int col11)
{
int k,j;
int xn,yn;
k=strlen(phstr);
j=strlen(str);
xn=x+j*8;
yn=y+2+16+14+16+2;
drwline(i,7,x,y,xn,y);
drwline(i,7,x,y-1,xn+1,y-1);
drwline(i,7,x,y-2,xn+2,y-2);
drwline(i,7,x,y-2,x,yn);
drwline(i,7,x-1,y-2,x-1,yn+1);
drwline(i,7,x-2,y-2,x-2,yn+2);
drwline(i,0,xn+2,y-1,xn+2,yn+2);
drwline(i,0,xn+1,y,xn+1,yn+2);
drwline(i,0,xn,y+1,xn,yn+2);
drwline(i,0,x-1,yn+2,xn+2,yn+2);
drwline(i,0,x,yn+1,xn+2,yn+1);
drwline(i,0,x+1,yn,xn+2,yn);
drwfillbox(i,col11,x+1,y+1,xn-1,yn-1);
drwstr(phstr,x+(xn-x)/2-k*16/2,y+4,1,2,BLACK,i);
drwhzstr(str,x+2,y+2+16+14,1,1,RED,i);
}
void dispstore(char *s)
{
drwfillbox(SET,BLACK,20,360,40,460);
drwhzstr(s,26,360,2,1,38,SET);
strcpy(buf1,"层");
drwhzstr(buf1,26,428,2,1,38,SET);
}
void lmtspeedinit(void)
{
int j;
char *pp;
double dtmp;
FILE *fp;
iCOM=1;
dCIR=935.0;
dANG=75.0;
dSYN=90.0;
dMAX=15.0;
dRAT=5.88;
dACC=150.0;
dDAT=10L;
dCDR=152.0;
iSEL=1;
iADD=1;
iSPD=180;
iPOS=5;
iSCA=1;
if((fp=fopen("cutoff.ini","r+b"))==NULL)
{
printf("File CUTOFF.INI no found.Use default data.sdelay(180) ");
}
else
{
while(!feof(fp))
{if(fgets(buf1,80,fp)!=NULL)
if((pp=strstr(buf1,"COM"))!=NULL)
{j=atoi(pp+5);
if((j>=0)&&(j<=32)) iCOM=j;
else iCOM=1;
}
else if((pp=strstr(buf1,"CIR"))!=NULL)
{dtmp=atof(pp+5);
if(dtmp>750.0) dCIR=dtmp;
else dCIR=935.0;
}
else if((pp=strstr(buf1,"ANG"))!=NULL)
{dtmp=atof(pp+5);
if((dtmp>0.0)&&(dtmp<100.0)) dANG=dtmp;
else dANG=75.0;
}
else if((pp=strstr(buf1,"CDR"))!=NULL)
{dtmp=atof(pp+5);
dCDR=dtmp;
}
else if((pp=strstr(buf1,"SYN"))!=NULL)
{dtmp=atof(pp+5);
if((dtmp>=0.0)&&(dtmp<=90.0)) dSYN=dtmp;
else dSYN=90.0;
}
else if((pp=strstr(buf1,"MAX"))!=NULL)
{dtmp=atof(pp+5);
if((dtmp>0.0)&&(dtmp<100.0)) dMAX=dtmp;
else dMAX=15.0;
}
else if((pp=strstr(buf1,"RAT"))!=NULL)
{dtmp=atof(pp+5);
if((dtmp>0.0)&&(dtmp<20.0)) dRAT=dtmp;
else dRAT=5.88;
}
else if((pp=strstr(buf1,"ACC"))!=NULL)
{dtmp=atof(pp+5);
if((dtmp>0.0)&&(dtmp<1000.0)) dACC=dtmp;
else dACC=150.0;
}
else if((pp=strstr(buf1,"DAT"))!=NULL)
{dtmp=atof(pp+5);
dDAT=(long int)dtmp;
}
else if((pp=strstr(buf1,"SEL"))!=NULL)
{ j=atoi(pp+5);
iSEL=j;
}
else if((pp=strstr(buf1,"ADD"))!=NULL)
{j=atoi(pp+5);
iADD=j;
}
else if((pp=strstr(buf1,"SPD"))!=NULL)
{j=atoi(pp+5);
iSPD=j;
}
else if((pp=strstr(buf1,"POS"))!=NULL)
{j=atoi(pp+5);
iPOS=j;
}
else if((pp=strstr(buf1,"SCA"))!=NULL)
{j=atoi(pp+5);
iSCA=j;
}
}
fclose(fp);
}
}
int readcdata(int x,int y,int maxlen,char *str)
{
int i,count,x0,y0,xn,yn;
readbuf[1]='\0';
count=0;
xn=x+8*maxlen;
yn=y+16;
while(count<maxlen)
{
x0=x+count*8;
y0=y;
drwline(SET,WHITE,x0,y0+17,xn,y0+17);
i=getkey();
/* if(i==9)
drwfillbox(SET,RED,x0,y0,xn-2,y0+16);
drwline(SET,RED,x0,y0+17,xn,y0+17);*/
if(i==ENTER)
{str[count]='\0';
return i;
}
else if(i==BACKSPACE)
{if(count>0)
{drwfillbox(SET,RED,x0-8,y0+2,xn-8,yn);
count--;
str[count]='\0';
}
}
/* else if(i>' ')*/
else if((i>47)&&(i<58))
{str[count++]=(char)i;
str[count]='\0';
readbuf[0]=(char)i;
drwstr(readbuf,x0,y0,1,1,WHITE,SET);
}
}
return ENTER;
}
int inputnum(int s)
{int x,y,xn,yn,x0,y0;
int j,m,count;
int maxlen;
x=400-25*4-7;
y=300-26;
xn=400+25*4+7;
yn=300+26;
strcpy(tmpbuf,"num.pcx");
pcxmake(x,y,xn,yn,tmpbuf);
drwfillbox(SET,GRAY,x,y,xn,yn);
drwfillbox(SET,YELLOW,x+2,y+2,xn-2,yn-2);
if(s==1)
strcpy(buffer,"请输入当前增加数量!");
else if(s==2)
strcpy(buffer,"请输入删除那条定单?");
drwhzstr(buffer,x+7,y+7,1,1,RED,XOR);
drwbox(SET,lYELLOW,x+8,y+26+3,xn-8,y+26+20+3);
drwfillbox(SET,RED,x+10,y+26+5,xn-7,y+26+20+2);
count=0;
x0=x+10;
y0=y+26;
maxlen=6;
j=readcdata(x0,y0+4,maxlen,buffer);
m=strlen(buffer);
if(s==1) adnum=atol(buffer);
else if(s==2) cdnum=atoi(buffer);
pcxput(SET,x,y,tmpbuf);
if(atol(buffer)>0)
return TRUE;
else return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -