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

📄 t0328.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 3 页
字号:
    p1++;
   }
     
     for(i=0;i<10;i++)
      {
       if (i<4)
         cutlength1[i]=' ';
       prdnumber1[i]=' ';
       leftlength1[i]=' ';
       }
     for(i=0;i<4;i++)
       {*p1=order[irec-1][60+i];
        cutlength1[i]=order[irec-1][60+i];
        pnum[i]=order[irec-1][56+i];
       p1++;
       }
     p1++;
     k=atoi(pnum);
     ltoa(prdnumber*k,prdnumber1,10);
     for(i=0;i<10;i++)
       { *p1=prdnumber1[i];
        p1++;
       }
     leftnumber=leftnumber*(atoi(cutlength1));
     ltoa(leftnumber,leftlength1,10);
     for(i=0;i<10;i++)
      {
       *p1=leftlength1[i];
       p1++;
      }

 *p1=13;
 *p=1;
}                 

int maxprdrec(void)
{FILE *fp;
 long i;
 
 i=0L;
 if((fp=fopen("prddata.txt","r")) != NULL)
  {i=filelength(fileno(fp));
   fclose(fp);
  }

 return (int)(i/112L);
}


void scandata(int istart,int iend)
{FILE *fp;
 int i,j,k,m;
 long ii,jj;

 i=0;
 j=0;
 k=2;
 if((fp=fopen("prddata.txt","r")) != NULL)
  {ii=filelength(fileno(fp));
   jj=0L;
   
   while(!feof(fp))
    {fgets(ibuf1,130,fp);
     m=strlen(ibuf1);
     jj=jj+m;
     if (jj>ii) break;

     if(i>=istart)
      {k=i-istart+2;
       if((k>=2) && (k<9))
         {strncpy(ibuf2,ibuf1,70);
          ibuf2[70]='\0';
          disporder(k,ibuf2,GREEN,RED);
         }
       j++;
      }
     if(j>iend) break;
     i++;
    }
   if(k<9)
    {strncpy(ibuf2,ibuf1,70);
    ibuf2[70]='\0';
    disporder(k,ibuf2,GREEN,RED);
    }

   memset(ibuf2,' ',70);
   ibuf2[70]='\0';
   for(i=k+1;i<9;i++)
    disporder(i,ibuf2,GREEN,RED);

   fclose(fp);
  }
}

int scanbuf(int istart,char *istr)
{FILE *fp;
 int i,j,k,m;
 long ii,jj;

 i=0;
 j=0;
 k=0;
 if((fp=fopen("prddata.txt","r")) != NULL)
  {ii=filelength(fileno(fp));
   jj=0L;
   while(!feof(fp))
    {fgets(ibuf1,120,fp);
     m=strlen(ibuf1);
     jj=jj+m;
     if(jj>=ii) break;

     if(i==istart)
      {strncpy(istr,ibuf1,70);
       istr[70]='\0';
       fclose(fp);
       return TRUE;
      }
     i++;
    }
   fclose(fp);
   return FALSE;
  }
}


void initdata(void)
{ FILE *fpin,*fpout;
  long idate,jdate;
  int iyear,imonth,iday,m;
  int jyear,jmonth,jday;
  long ii,jj;

  _strdate(buffer);
  imonth=atoi(buffer);
  iday=atoi(buffer+3);
  iyear=atoi(buffer+6);
  idate=iyear*365+imonth*30+iday;

  if((fpout=fopen("olddata.txt","w")) != NULL)
    if((fpin=fopen("prddata.txt","rb"))!=NULL)
     {ii=filelength(fileno(fpin));
      jj=0L;
      while(!feof(fpin))
      {fgets(ibuf1,120,fpin);
       m=strlen(ibuf1);
       jj=jj+m;
       if(jj>ii) break;
         
       ibuf1[110]='\n';
       ibuf1[111]='\0';
           
       strncpy(ibuf2,ibuf1+70,8);
       ibuf2[8]='\0';

       jmonth=atoi(ibuf2);
       jday=atoi(ibuf2+3);
       jyear=atoi(ibuf2+6);
       jdate=jyear*365+jmonth*30+jday;

       if(labs(jdate-idate)<=dDAT)
         fputs(ibuf1,fpout);
      }
     }

  fclose(fpin);
  fclose(fpout);
  remove("prddata.txt");
  rename("olddata.txt","prddata.txt");
}


int bcccheck(char *str)
{int i,j,bcc;

 i=strlen(str);
 bcc=str[0];
 for(j=1;j<i-1;j++)
   bcc=bcc ^ str[j];
 if(bcc<' ') bcc=bcc+' ';
 if(bcc==str[i-1])
   return TRUE;
 else
   return FALSE;
}

int bccstr(char *str)
{int i,j,bcc;

 i=strlen(str);
 bcc=str[0];
 for(j=1;j<i;j++)
   bcc=bcc ^ str[j];
 if(bcc<' ') bcc=bcc+' ';

 return bcc;
}


int ErrorCheck(int Code)
{/* trap PCL error codes */
 if(Code<0)
     {printf("ERROR %d:",Code);
      SioError(Code);
      SioDone(Port);
      exit(1);
     }
 return(0);
} /* end ErrorCheck */


void dispspeed(void)
{if(oldspeed!=ispeed)
  {sprintf(buf3,"%3d",ispeed);
   drwfillbox(SET,BLUE,11,154,114,213);
   drwstr(buf3,13,156,4,4,WHITE,SET);
   oldspeed=ispeed;
  }
}

void dispprdnumber(void)
{if(oldprdnumber!=prdnumber)
  {sprintf(buf3,"%8ld",prdnumber);
   drwfillbox(SET,BLUE,121,154,387,213);
   drwstr(buf3,123,156,4,4,WHITE,SET);
   oldprdnumber=prdnumber;
   displeftnumber();
  }
}

void displeftnumber(void)
{leftnumber=setnumber-prdnumber+badnumber;
 sprintf(buf3,"%8ld",leftnumber);
 drwfillbox(SET,BLUE,394,154,648,213);
 drwstr(buf3,396,156,4,4,WHITE,SET);
}


void dispbadnumber(void)
{ sprintf(buf3,"%4d",badnumber%10000);
  drwfillbox(SET,RED,655,154,791,213);
  drwstr(buf3,657,156,4,4,WHITE,SET);
  displeftnumber();
}

void broworder(void)
{int ok;
 int i,j,k;

 strcpy(buf2,"tt.pcx");
 pcxmake(260,101,536,266,buf2);
 strcpy(buf2,"menu.pcx");
 pcxput(SET,260,101,buf2);
  
 i=irec;
 ok=TRUE;
 while(ok)
  {if(kbhit())
    {j=getkey();
     switch(j)
      {case ESC:
        ok=FALSE;
        break;
       case kbUp:
        if(i>irec) i--;
        dispallorder(i,maxrec-1);
        break;
       case kbDn:
        if(i<(maxrec-1)) i++;
        dispallorder(i,maxrec-1);
        break;
       case kbHOME:
        i=irec;
        dispallorder(i,maxrec-1);
        break;
       case kbEND:
        i=maxrec-1;
       dispallorder(i,maxrec-1);
        break;
       case kbPgUp:
        if((i-7)>=irec) i=i-7;
       dispallorder(i,maxrec-1);
        break;
       case kbPgDn:
        if((i+7)<=(maxrec-1)) i=i+7;
        dispallorder(i,maxrec-1);
        break;
       case kbF1:
  /*      strcpy(buf2,"tt.pcx");
        pcxmake(260,201,536,366,buf2);
        strcpy(buf3,"menu.pcx");
        pcxput(SET,260,201,buf3);
              
        getch();
        pcxput(SET,260,201,buf2);*/
        break;
       case kbINS:
        if(inputorder(buf3)!=9)
          {strupr(buf3);
           appendorder(buf3);
           
           for(k=maxrec-1;k>i;k--)
             exchangeorder(k,k-1);
          dispallorder(i,maxrec-1);
          }
        break;
       case kbDEL:
        strcpy(buf2,"请确认删除此定单?");
        k=msgbox(buf2,1,1);
        if((k=='Y') || (k=='y') || (k==ENTER))
         {for(k=i;k<maxrec-1;k++)
            exchangeorder(k,k+1);
          if(maxrec>0) maxrec--;
         dispallorder(i,maxrec-1);
         }
        break;
       case kbF8:
        strcpy(buf2,"请确认重输此定单?");
        k=msgbox(buf2,1,1);
        if((k=='Y') || (k=='y') || (k==ENTER))
         {inputorder(buf2);
          strupr(buf2);
          for(k=0;k<70;k++)
            order[i][k]=buf2[k];
         dispallorder(i,maxrec-1);
         }

        break;
      }
     }
   }

 strcpy(buf2,"tt.pcx");
/* drwstr(buf2,8,400,1,1,RED,XOR);*/
 pcxput(SET,260,101,buf2);
}

void historybrow(void)
{int ok;
 int i,j,k;

 strcpy(buf2,"tt.pcx");
 pcxmake(260,101,536,266,buf2);
 strcpy(buf2,"menu.pcx");
 pcxput(SET,260,101,buf2);

 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,7);
        break;
       case kbDn:
        if(i<maxprdrec()) i++;
        scandata(i,7);
        break;
       case kbHOME:
        i=0;
        scandata(i,7);
        break;
       case kbEND:
        i=maxprdrec();
        scandata(i,7);
        break;
       
       case kbPgUp:
        if((i-7)>=0) i=i-7;
        scandata(i,7);
        break;
       case kbPgDn:
        if(i+7<maxprdrec()) i=i+7; 
        scandata(i,7);
        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][60+i];
    buf2[4]='\0';
    tmplen=atoi(buf2);

    for(i=0;i<10;i++)
      buf2[i]=order[irec][64+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);
      }
      
      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++;
  }

⌨️ 快捷键说明

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