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

📄 t3.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 4 页
字号:

 i=0; 
 ok=TRUE;
 scandata(i,8);
 while(ok)
  {if(kbhit())
    {j=getkey();
     switch(j)
      {case ESC:
        ok=FALSE;
        break;
       case kbUp:
        if(i>0) i--;
        scandata(i,8);
        break;
       case kbDn:
        if(i<maxprdrec()) i++;
        scandata(i,8);
        break;
       case kbHOME:
        i=0;
        scandata(i,8);
        break;
       case kbEND:
        i=maxprdrec();
        scandata(i,8);
        break;
       
       case kbPgUp:
        if((i-8)>=0) i=i-8;
        scandata(i,8);
        break;
       case kbPgDn:
        if(i+8<maxprdrec()) i=i+8; 
        scandata(i,8);
        break;

       case kbINS:
        strcpy(buf2,"请确认还原此定单?");
        k=msgbox(buf2,1,1);
        if((k=='Y') || (k=='y') || (k==ENTER))
          {if(scanbuf(i,buf3))
             appendorder(buf3);
          } 
        break;

      }
     }
   }

 strcpy(buf2,"tt.pcx");
 pcxput(SET,260,101,buf2);
}

void exchangeorder(int i,int j)
{int k;

 if((i>=irec) && (i<maxrec))
    if((j>=irec) && (j<maxrec))
      for(k=0;k<70;k++)
       { buf2[k]=order[i][k];
         order[i][k]=order[j][k];
         order[j][k]=buf2[k];
       }
}

void uploadorder(void)
{FILE *fp;
 int i,k;

 strcpy(buf2,"请确认上载定单?");
 i=msgbox(buf2,1,1);
 if((i=='Y') || (i=='y') || (i==ENTER))
   {strcpy(buf2,"Upload");
    drwstr(buf2,8,400,1,1,RED,XOR);

    strcpy(buf2,"sorder.txt");
    if((fp=fopen(buf2,"rb")) != NULL)
     while(!feof(fp))
      {k=fread(buf2,sizeof(char),70,fp);
       if(k==70)
         appendorder(buf2);
      }

    fclose(fp);

    strcpy(buf2,"Upload");
    drwstr(buf2,8,400,1,1,RED,XOR);
   }
}

void saveorder(void)
{int fp;
 int i,j,k;

 strcpy(buf2,"Saving");
 drwstr(buf2,8,400,1,1,RED,XOR);

 strcpy(buf2,"sorder.txt");
 if(_dos_creat(buf2,_A_NORMAL,&fp) ==0)
   {for(i=irec;i<maxrec;i++)
     {for(j=0;j<70;j++)
       buf2[j]=order[i][j];

      buf2[70]='\0';
      _dos_write(fp,buf2,70,&k);
     }
    _dos_close(fp);
   }

 strcpy(buf2,"Saving");
 drwstr(buf2,8,400,1,1,RED,XOR);

}

void changeorder(void)
{int i,tmplen;
 FILE *fp;
 int tmpnumber;

 if((irec>=0) && (irec<=maxrec-1))
   {for(i=0;i<4;i++)
      buf2[i]=order[irec][56+i];
    buf2[4]='\0';
    tmplen=atoi(buf2);

    for(i=0;i<10;i++)
      buf2[i]=order[irec][60+i];
    buf2[10]='\0';
    tmpnumber=atoi(buf2);
    if(tmpnumber<0) tmpnumber=0;

    if(sendorderok(tmplen,tmpnumber))
     {strcpy(buf2,"prddata.txt");
      if((fp=fopen(buf2,"a+")) != NULL)
       {if(!FirstChangeOk)
        {fwrite(currentorder,sizeof(char),70,fp);
         buf2[0]='\0';
         _strdate(buf3);
         strcat(buf2,buf3);
         _strtime(buf3);
         strcat(buf2,buf3);
         sprintf(buf3,"%10ld%10ld%4d\n",prdnumber,leftnumber,badnumber);
         strcat(buf2,buf3);
         i=strlen(buf2);
         fwrite(buf2,sizeof(char),i,fp);
        }
       else
        FirstChangeOk=FALSE;

       fclose(fp);
      }
      alllength=alllength+salllength;
      omaxrec++;
      setlength=tmplen;
      setnumber=tmpnumber;
      lmtspeed=lmtspeedcal(tmplen);

      prdnumber=0;
      badnumber=0;

      for(i=0;i<70;i++)
       {oldorder[i]=currentorder[i];
        currentorder[i]=order[irec][i];
       }

      oldorder[70]='\0';
      currentorder[70]='\0';

      orderok=TRUE;

      disporder(0,oldorder,GREEN,BLACK);
      disporder(1,currentorder,RED,WHITE);
      dispprdnumber();
      displeftnumber();
      dispbadnumber();

      if(irec<=maxrec-1)
       irec++;
     }
    else
     {strcpy(buf2,"换单错误!");
      msgbox(buf2,0,1);
     }
     
   }
 else
   {strcpy(buf2,"定单太少,不能换单?");
    msgbox(buf2,0,1);
   }

}

int sendorderok(int tmplen,int tmpnumber)
{time_t tstart,tstop;
 int sendcounter,rvcount,rvtm,i,k;
 int tm;

 if(tmplen<500)
   {strcpy(buf2,"定单长度太短!");
    msgbox(buf2,0,1);
    return FALSE;
   }

 if(tmplen>9999)
   {strcpy(buf2,"定单长度太长!");
    msgbox(buf2,0,1);
    return FALSE;
   }

 if(tmpnumber>65535)
   {strcpy(buf2,"定单数量太多!");
    msgbox(buf2,0,1);
    return FALSE;
   }

 if(tmpnumber<0)
   {strcpy(buf2,"定单数量太少!");
    msgbox(buf2,0,1);
    return FALSE;
   }

 sprintf(buf2,"%05d%06d",tmplen,tmpnumber);
 i=bccstr(buf2);
 buf2[11]=(char)i;
 buf2[12]=ENTER;
 buf2[13]='\0';

 sendcounter=0;
 tm=0;

 while(sendcounter<25)
  {SioRTS(Port,'S');
   SioPuts(Port,buf2,13);
   SioEmpty(Port);
   SioRTS(Port,'C');
   rvcount=0;
   rvtm=0;
   time(&tstart);
   k=0;
   tm=0;
   while(rvtm<2)
     {i=SioGetc(Port,0);
      if(i==ACK)
        return TRUE;
      else if(i==NAK)
        return FALSE;

      time(&tstop);
      if(fabs(difftime(tstop,tstart))>1.0)
       {rvtm++;
        time(&tstart);
       }
      tm++;
      if(tm>3500) break;
     }

   sendcounter++;
  }
 return FALSE;
}

void showtime(void)
{ _strtime(newtimebuf);
  if(strncmp(oldtimebuf,newtimebuf,8)!=0)
    {strcpy(oldtimebuf,newtimebuf);
     drwfillbox(SET,WHITE,650,5,778,21);
     oldtimebuf[8]='\0';
     drwstr(oldtimebuf,650,5,1,2,RED,XOR);
     scanmem();
    }
}

void appendorder(char *str)
{int i;

 i=strlen(str);
 if(i>=70)
  {for(i=0;i<70;i++)
     order[maxrec][i]=str[i];
   maxrec++;
  }
}

void dispallorder(int startrec,int endrec)
{int i,count,j;

 count=0;
 for(i=startrec;i<=endrec;i++)
  { for(j=0;j<70;j++)
      buffer[j]=order[i][j];
    buffer[70]='\0';
    disporder(count+2,buffer,BLUE,WHITE);
    count++;
    if(count>6) break;
  }
 for(i=count;i<7;i++)
  { for(j=0;j<70;j++)
      buffer[j]=' ';
    buffer[70]='\0';
    disporder(i+2,buffer,BLUE,WHITE);
  }

}

void disporder(int loc,char *str,int icolor,int fcolor)
{ int i,j,maxlen,strcnt;
  int x,y,xn,yn;
  int count;
  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;

    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]=' ';

       tmpbuf[maxlen]='\0';
       count=count+maxlen;
      }

    if(i==4) ilength=atoi(tmpbuf);
    if(i==6) sprintf(tmpbuf,"%3d",lmtspeedcal(ilength));

    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;
  char *buf;
  x=8;
  y=510;
  xn=791;
  yn=535;
  buf=(char *)calloc(1,80);
  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<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==9)
      i=6;
    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
     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);

  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -