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

📄 tt8.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 4 页
字号:
#include<io.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<graph.h>
#include<time.h>
#include<dos.h>
#include<fcntl.h>
#include<malloc.h>
#include<share.h>
#include<math.h>

#include "svgacc.h"      
#include "pcl4c.h"
#include "lu.h"
#define address 0xd0000000
#define address1 0xd0000290
#define ss1 43
static char strbuf[70];
void map(void);             

int main(void)
{  int ok,ikeycode,i,j,k,yu;
   char *buf,*buf1;
   FILE *fpASC;
   char far *Ptr,*p,*p1,*p2;
   FILE *FP,*fp1;
   int clength;
   int lengthdu;
   char ireclength[4],getchar1;
 
   int borrowcount;
   char buf111[8];
   int  Seg;
   int sendok,maxtm;
   char buf112[20];
   time_t tmstart,tmend;
   
   initdata();   
   lmtspeedinit();
   Port=iCOM;

   Ptr = (char far *)RxBuffer;
   Seg = FP_SEG(Ptr) + ((FP_OFF(Ptr)+15)>>4);
   ErrorCheck(SioRxBuf(Port,Seg,Size1024));

   Ptr = (char far *)TxBuffer;
   Seg = FP_SEG(Ptr) + ((FP_OFF(Ptr)+15)>>4);
   ErrorCheck( SioTxBuf(Port,Seg,Size512) );
   ErrorCheck( SioParms(Port,NoParity,OneStopBit,WordLength8) );
   ErrorCheck( SioReset(Port,Baud9600) );
   i = SioFIFO(Port,LEVEL_4TH);


   if((fpASC=fopen("asc16","rb"))==0)
     {printf("Error: ASC16 can't open.\n");
      return FALSE;
     }

   if(fgets(ASC16,4096,fpASC)==NULL)
     {printf("ERROR:ASC16 Read Error.\n");
      fclose(fpASC);
      return FALSE;
     }

   fclose(fpASC);
   
   clength=0;
   setlength=935;
   setnumber=0L;
   lmtspeed=184;
   cuterror=0;
   lengthdu=0;
   prdnumber=0L;
   ispeed=0;
   badnumber=0;
   oldspeed=0;
   oldprdnumber=0L;
   leftnumber=0L;
   rcvcount=0;
   maxtm=1500;
   borrowcount=0;
   autook=FALSE;

   FirstChangeOk=TRUE;
   omaxrec=0;
   irec=0;
   maxrec=0;
   tmcounter=0;
   yu=1;
   buf=(char *)calloc(1,80);
   buf1=(char *)calloc(1,10);
   _strtime(oldtimebuf);
   whichvga(); 
   res800(); 
   map();
   
   _strdate(buf);
   drwstr(buf,400,5,1,2,RED,SET);

   ok=TRUE;
   sendok=TRUE;
   orderok=FALSE;
   autoct=0;
   leftct=0;
    strcpy(buf111,"tu.pcx");
   pcxmake(9,byorder[borrowcount][0]-3,72,byorder[borrowcount][1]+3,buf111);
   drwfillbox(SET,BLACK,9,byorder[borrowcount][0]-3,72,byorder[borrowcount][1]+3);
   borrow(10,55,byorder[borrowcount][0],byorder[borrowcount][1],borrowcount+33,3);   
   while(ok)
    {if((sendok) && (orderok)) 
      {buf3[0]='1';
       buf3[1]=ENTER;
       buf3[2]='\0';
       SioRTS(Port,'S');
       SioPuts(Port,buf3,2);
       SioEmpty(Port);
       SioRTS(Port,'C');
       sendok=FALSE;
       tmcounter=0;
       time(&tmstart);
      }

     p2=address1;
     p=(char far *)address;
     p1=p;
     p++;
     *p=1;
     p++;
     for(i=irec-2;i<9+irec;i++)
       { for(j=0;j<70;j++)
           {*p=order[i][j];
            p++;
            }
       p++;
       }    
     for(i=0;i<10;i++)
      {
       if (i<4)
         cutlength[i]=' ';
       prdnumber1[i]=' ';
       leftlength[i]=' ';
       }
     for(i=0;i<4;i++)
       {*p2=order[irec][56+i];
        cutlength[i]=order[irec][56+i];
       p2++;
       }
     p2++;
     ltoa(prdnumber,prdnumber1,10);
     for(i=0;i<10;i++)
       { *p2=prdnumber1[i];
        p2++;
       }
     leftnumber=leftnumber*(atoi(cutlength));
     ltoa(leftnumber,leftlength,10);
     for(i=0;i<10;i++)
      {
       *p2=leftlength[i];
       p2++;
      }
     *p2=0x0d;
     *p1=1;
     
     
     if(kbhit())
        {ikeycode=getkey();
         switch(ikeycode)
          { case kbF1: /* Input */
             drwbutton(str0[0],str0[1],8,545,SET,lGREEN);
             inputorder(buf);
             strupr(buf);
             if (flag2==TRUE) 
                appendorder(buf);
             dispallorder(irec,maxrec-1);    
             drwbutton(str0[0],str0[1],8,545,SET,44);
             break;
            case kbF2: /* Change */
             drwbutton(str0[2],str0[3],88,545,SET,lGREEN);
             
             changeorder();
             dispallorder(irec,maxrec-1);
             drwfillcircle(SET,WHITE,30,50,20);  
             drwbutton(str0[2],str0[3],88,545,SET,44);  
             break;
            case kbF3: /* Save */
             drwbutton(str0[4],str0[5],167,545,SET,lGREEN);
             
             saveorder();
             sdelay(5); 
             drwbutton(str0[4],str0[5],167,545,SET,44);  
             
             break;
            case kbF4: /* Brow */
             drwbutton(str0[6],str0[7],247,545,SET,lGREEN);
             
             broworder();
             dispallorder(irec,maxrec-1);
             drwbutton(str0[6],str0[7],247,545,SET,44);  
             break;
            case kbF5: /* Upload */
             drwbutton(str0[8],str0[9],326,545,SET,lGREEN);
          /*   brrow(int x1,int x2,int y1,int y2,int col,int high) */ 
            
             uploadorder();
             dispallorder(irec,maxrec-1);
             drwbutton(str0[8],str0[9],326,545,SET,44);  
             break;
            case kbF6: /* History */
             drwbutton(str0[10],str0[11],406,545,SET,lGREEN);
                                      
             historybrow();
             dispallorder(irec,maxrec-1);
             drwbutton(str0[10],str0[11],406,545,SET,44);  
             break;
            case kbF7: /* Auto Order Exchange */
                     autook=!autook;
                     break; 
            case kbF8: /* Cancel Exchange */ 
             drwbutton(str0[12],str0[13],565,545,SET,lGREEN);
             
             strcpy(buf2,"请确认是否需要取消换单?");
             i=msgbox(buf2,1,1);
             if((i=='y') || (i=='Y') || (i==ENTER))
              {strncpy(buf3,currentorder,70);
               appendorder(buf3);
           
               for(k=maxrec-1;k>irec;k--)
                 exchangeorder(k,k-1);
               
               strncpy(buf3,oldorder,70);
               appendorder(buf3);
           
               for(k=maxrec-1;k>irec;k--)
                 exchangeorder(k,k-1);
               
               changeorder();
               dispallorder(irec,maxrec-1);
             /*drwfillcircle(SET,WHITE,730,50,20);*/  
              }
              drwbutton(str0[12],str0[13],565,545,SET,44);  
              break;
             
            case '+':
             drwbutton(str0[14],str0[15],644,545,SET,lGREEN);
             
             badnumber++;
             dispbadnumber();
             drwbutton(str0[14],str0[15],644,545,SET,44);  
            
             break;
            case '-':
             drwbutton(str0[14],str0[15],644,545,SET,lGREEN);
             
             if(badnumber>0)
               {badnumber--;
                dispbadnumber();
               }
             drwbutton(str0[14],str0[15],644,545,SET,44);  
            break;
            case ESC:
             drwbutton(str0[16],str0[17],725,545,SET,lGREEN);
             
             strcpy(buf2,"请确认退出系统?");
             i=msgbox(buf2,1,1);
             if((i=='y') || (i=='Y') || (i==ENTER))
              ok=FALSE;
             drwbutton(str0[16],str0[17],725,545,SET,44);  
             break;
            case kbUp:    
                     
             if (borrowcount!=0) 
              { pcxput(SET,9,byorder[borrowcount][0]-3,buf111);
                pcxmake(9,byorder[borrowcount-1][0]-3,72,byorder[borrowcount-1][1]+3,buf111);
                drwfillbox(SET,BLACK,9,byorder[borrowcount-1][0]-3,72,byorder[borrowcount-1][1]+3);               
                borrow(10,55,byorder[borrowcount-1][0],byorder[borrowcount-1][1],borrowcount+33,3);
               
               }
               if (borrowcount==0)
                  borrowcount=0;
                  else borrowcount=borrowcount-1;
               break;
            case kbDn:    
             if (borrowcount!=7) 
              {if (borrowcount==0) 
                   {pcxput(SET,9,byorder[borrowcount][0]-3,buf111);
                   pcxmake(9,byorder[borrowcount+1][0]-3,72,byorder[borrowcount+1][1]+3,buf111);
                   drwfillbox(SET,BLACK,9,byorder[borrowcount+1][0]-3,72,byorder[borrowcount+1][1]+3);          
                   }
                   else{pcxput(SET,9,byorder[borrowcount][0]-3,buf111);
                        pcxmake(9,byorder[borrowcount+1][0]-3,72,byorder[borrowcount+1][1]+3,buf111);
                        drwfillbox(SET,BLACK,9,byorder[borrowcount+1][0]-3,72,byorder[borrowcount+1][1]+3);          
                       }
                borrow(10,55,byorder[borrowcount+1][0],byorder[borrowcount+1][1],borrowcount+33,3);
              } 
             if (borrowcount==7)  
                 borrowcount=7;
                 else borrowcount=borrowcount+1;
               break;
          }
         tmcounter=maxtm;
         time(&tmstart);
        
        }
      
      showtime();
      dispspeed();
      dispprdnumber();
      
      rcvchar= (char)SioGetc(Port,0);
      if(rcvchar==STX)
       rcvcount=0;
      else if(rcvchar==ENTER)
        {rcvbuf[rcvcount]='\0';
         if(bcccheck(rcvbuf))
          {for(i=0;i<3;i++)
            buf3[i]=rcvbuf[i];
           buf3[3]='\0';
           ispeed=atoi(buf3);
           for(i=0;i<6;i++)
            buf3[i]=rcvbuf[3+i];
           buf3[6]='\0';
           prdnumber=atol(buf3);
           for(i=0;i<4;i++)
            buf3[i]=rcvbuf[9+i];
           buf3[4]='\0';
           cutlength=atoi(buf3);
           if(setlength != cutlength)
            {strcpy(buf2,"prddata.txt");
             if((fpp=fopen(buf2,"a+")) != NULL)
              { fwrite(currentorder,sizeof(char),70,fpp);
                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,fpp);

                fclose(fpp);
              }
      
             setlength=cutlength;
             setnumber=0;
             lmtspeed=lmtspeedcal(setlength);

             prdnumber=0;
             badnumber=0;

             for(i=0;i<70;i++)
              { oldorder[i]=currentorder[i];
                currentorder[i]=' ';
              }
             sprintf(buf3,"%04d",cutlength);
             for(i=0;i<4;i++)
                currentorder[56+i]=buf3[i];

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

             orderok=TRUE;

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

         }
         sendok=TRUE;
         tmcounter=maxtm;
         time(&tmstart);
        }
      else if(rcvchar>=' ')
        rcvbuf[rcvcount++]=rcvchar;
      
          

      if(!sendok)
       {time(&tmend);
        tmcounter++;
        if(fabs(difftime(tmend,tmstart))>=5.0)
          {sendok=TRUE;
           strcpy(buf2,"通信超时错误!");   
           waitbox(buf2,0,1);
           time(&tmstart);
          } 
        else if(tmcounter>=maxtm)
         { sendok=TRUE;
           tmcounter=0;
           time(&tmstart);
         }
       }

      leftnumber=setnumber-prdnumber+badnumber;
      if(leftnumber<20L)
       {if(leftct==0)
          drwfillcircle(XOR,GREEN,30,50,20);
        leftct++;
        if(leftct>500) leftct=0;
       }
      if((autook) && (leftnumber<=1) && (orderok))
        {changeorder();
         dispallorder(irec,maxrec-1);
         drwfillcircle(SET,WHITE,30,50,20); 
        }
  
      if(autook)
       {if(autoct==0)
         drwfillcircle(XOR,CYAN,515,570,5);
        autoct++; 
        if(autoct>800) autoct=0;
        if(irec>maxrec-1) autook=FALSE;
       }
      else
       drwfillcircle(SET,YELLOW,515,570,5);

      lmtspeed=lmtspeedcal(setlength);
      if((ispeed>lmtspeed) && orderok)
        { strcpy(buf2,"生产速度超过极速!不能保证正常生产!");
          waitbox(buf2,0,1);
        }       
  }
    
   restext(); 
   SioDone(Port);

   free(buf);
     
   return 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<10;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;
  }
}


⌨️ 快捷键说明

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