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

📄 t8.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 3 页
字号:
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-8)>=irec) i=i-8;
       dispallorder(i,maxrec-1);
	break;
       case kbPgDn:
	if((i+8)<=(maxrec-1)) i=i+8;
       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:
	rebiao=inputorder(buf3);
	if (rebiao!=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");
 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,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;
 long 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=atol(buf2);

    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,RED,WHITE);
      disporder(1,currentorder,GREEN,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,long 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>999999L)
   {strcpy(buf2,"定单数量太多!");
    msgbox(buf2,0,1);
    return FALSE;
   }

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

 sprintf(buf2,"%05d%06ld",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);
    }
}

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>7) break;
  }
 for(i=count;i<8;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 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;

    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);

⌨️ 快捷键说明

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