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

📄 tt8.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 4 页
字号:
  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 + -