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

📄 cut1024.c

📁 以前做的泰国瓦楞纸板生产线监控系统
💻 C
📖 第 1 页 / 共 3 页
字号:
         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 + -