📄 tt8.c
字号:
int count;
int counts;
int counthz;
int ilength;
count=0;
ilength=0;
strcnt=strlen(str);
for(i=0;i<7;i++)
{x=xorder[i];
y=loc*28+258+2;
maxlen=4;
if(i==1) maxlen=6;
else if(i==2) maxlen=42;
else if(i==5) maxlen=10;
xn=xnorder[i];
yn=y+20;
/* pp1=address; */
drwfillbox(SET,icolor,x,y,xn,yn);
if(i<6)
{for(j=0;j<maxlen;j++)
if(strcnt>=70)
tmpbuf[j]=str[count+j];
else
tmpbuf[j]='\0';
tmpbuf[maxlen]='\0';
count=count+maxlen;
}
if(i==4) ilength=atoi(tmpbuf);
if(i==6) sprintf(tmpbuf,"%3d",lmtspeedcal(ilength));
counthz=0;
counts=0;
if (i==2)
hzstr(tmpbuf,x+1,y-1);
/* {
constj=strlen(tmpbuf);
for(j=0;j<constj;j++,j++)
{
strr1[0]=tmpbuf[j];
if (strr1[0]>=0)
j=constj;
else{ strr1[1]=tmpbuf[j+1];
strr1[2]='\0';
if (strr1[0]<0)
{strr1[1]=tmpbuf[j+1];
strr1[2]='\0';
drwhzstr(strr1,x+3+counthz*16+counts*8,y+2,1,1,fcolor,SET);
counthz=counthz+1;
}
else if ((strr1[0]>20)&&(strr1[0]<=127))
{ strr1[1]='\0';
j--;
drwstr(strr1,x+3+counthz*16+counts*8,y+2,1,1,fcolor,SET);
counts++;
}
else j=constj;
}*/
else
drwstr(tmpbuf,x+3,y+2,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) || (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 (int)(0.5+6.0*k/1000.0);
}
int inputorder(char *str)
{
int i,x,y,xn,yn,x0,y0,j,k;
int maxlen,count,m;
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;
flag2=TRUE;
for(i=0;i<6;i++)
{maxlen=4;
if(i==1) maxlen=6;
else if(i==2) maxlen=42;
else if(i==5) maxlen=10;
x0=xorder[i];
y0=y+2;
j=readstr(x0,y0,maxlen,buffer);
m=strlen(buffer);
if(j==ENTER)
{if(i==4)
{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==5)
{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
if (j==9)
{ i=6;
flag2=FALSE;
}
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 count,i,xn,yn;
int f;
int counts;
unsigned char returnvalue;
int x0,y0;
char c1,strr1[3];
int flag3;
readbuf[1]='\0';
count=0;
countz=0;
counts=0;
xn=x+8*maxlen+10;
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);
f=TRUE;
while(count<maxlen)
{
/* flag3=TRUE;
if ((maxlen==42)&&(f==TRUE))
{
strcpy(buffer,"输入汉字请按alt+F2(智能双拼)");
msg1box(buffer);
f=FALSE;
}
*/
if (maxlen==42)
{ x0=x+2+countz*16+counts*8;
y0=y+2;
xn=x0+16;
yn=y0+16;
drwfillbox(SET,RED,x0,y0,xn,yn);
while (flag3==TRUE)
{
returnvalue=(unsigned char)getkey();
if (((returnvalue>=232)&&(returnvalue<=241))||(returnvalue==267)||(returnvalue==268))
flag3=TRUE;
else
flag3=FALSE;
firstbyte=returnvalue;
}
if (firstbyte==0x1b)
{
drwfillbox(SET,lYELLOW,x+2,y+2,xn,yn);
count=0;
counts=0;
countz=0;
str[0]='\0';
}
else if (firstbyte==0x0d)
{ str[count]='\0';
return firstbyte;
}
else if (firstbyte==0x08)
{ if((countz>0)||(counts>0))
{if ((str[count-1]>=0)&&(str[count-1]<=127))
{ count--;
counts--;
str[count]='\0';
x0=x+2+countz*16+counts*8;
if (x0<=x+2)
x0=x+2+8;
drwfillbox(SET,lYELLOW,x0,y0,xn,yn);
}
else {countz--;
x0=x+2+countz*16+counts*8;
if (x0<=x+2)
x0=x+2+8;
drwfillbox(SET,lYELLOW,x0,y0,xn,yn);
count--;
count--;
str[count]='\0';
}
}
}
else if (firstbyte==0x09)
return firstbyte;
else if ((firstbyte>=20)&&(firstbyte<=127))
{ counts++;
str[count]=firstbyte;
strr1[0]=firstbyte;
strr1[1]='\0';
count++;
xn=x0+8;
drwstr(strr1,x0,y0,1,1,BLUE,SET);
}
else {
while(!CheckKeyBoard());
secondbyte=ReadChar();
str[count++]=firstbyte;
str[count++]=secondbyte;
str[count]='\0';
countz++;
strr1[0]=firstbyte;
strr1[1]=secondbyte;
strr1[2]='\0';
drwfillbox(SET,YELLOW,10,400,345,416);
drwhzstr2(strr1,10,400,1,1,BLUE,SET);
c1=(char)getkey();
switch (c1)
{ case '0':
strr1[1]=(char)(secondbyte-6);
str[count-1]=(char)(secondbyte-6);
break;
case '1':
strr1[1]=(char)(secondbyte-5);
str[count-1]=(char)(secondbyte-5);
break;
case '2':
strr1[1]=(char)(secondbyte-4);
str[count-1]=(char)(secondbyte-4);
break;
case '3':
strr1[1]=(char)(secondbyte-3);
str[count-1]=(char)(secondbyte-3);
break;
case '4':
strr1[1]=(char)(secondbyte-2);
str[count-1]=(char)(secondbyte-2);
break;
case '5':
strr1[1]=(char)(secondbyte-1);
str[count-1]=(char)(secondbyte-1);
break;
case '6':
strr1[1]=(char)(secondbyte-0);
str[count-1]=(char)(secondbyte-0);
break;
case '7':
strr1[1]=(char)(secondbyte+1);
str[count-1]=(char)(secondbyte+1);
break;
case '8':
strr1[1]=(char)(secondbyte+2);
str[count-1]=(char)(secondbyte+2);
break;
case '9':
strr1[1]=(char)(secondbyte+3);
str[count-1]=(char)(secondbyte+3);
break;
}
drwhzstr(strr1,x0,y0,1,1,BLUE,SET);
drwfillbox(SET,BLACK,10,400,345,416);
}
}
else
{
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==9)
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(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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -