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

📄 grapp.c

📁 在以前公司DOS环境下
💻 C
字号:

#include "svgacc.h"
#include <dos.h>
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>
#include <string.h>
#include <math.h>

#define enter 13
#define esc 27
#define ESC 27
#define BACKSPACE 8
#define ENTER 13
#define kbF1 187
#define kbF2 188
#define kbF3 189
#define kbF4 190
#define kbF5 191
#define kbF6 192
#define kbF7 193

#define kbUp 200
#define kbDn 208
#define kbCtrlE 5
#define kbCtrlZ 26

#define BLACK 0
#define lBLUE 1
#define lGREEN 2
#define lCYAN 3
#define lRED 4
#define lPINK 5
#define lYELLOW 6
#define lWHITE 7
#define GRAY 8
#define BLUE 9
#define GREEN 10
#define CYAN 11
#define RED 12
#define PINK 13
#define YELLOW 14
#define WHITE 15

static char ASCbuf[4096];
static int xorder[8]={75,117,171,552,595,638,681,750};
static int xnorder[8]={115,169,550,593,636,679,748,791}; 
static int yorder[9]={224,250,278,306,334,362,389,416,444};
static char oldtimebuf[8],newtimebuf[8];
static char buf2[80],buf11[80];
static int irec,maxrec;
static char order[100][70],buffer[80];
static char tmpbuf[80];


FILE *fpHZ;
void drwhzstr(char *s,int x,int y,int m,int n,int col,PixelMode mode);
void hzstr(char *s,int k,int x,int y);
void drwstr(char *s,int x,int y,int m,int n,int col,PixelMode mode);
void drwbutton1(char *phstr,char *str,int x,int y,PixelMode i,int col11);
void drwbutton(char *phstr,char *str,int x,int y,PixelMode i,int col11) ;
void drwbutton2(int x1,int y1,int w,int h,PixelMode i,int col);
int getkey();
void disporder(int loc,int icolor);
void disporder1(int loc,char *str,int icolor,int fclose);
void showtime(void);
void uploadorder(void);
void appendorder(char *str);
void dispallorder(int startrec,int endrec);
int lmtspeedcal(int ilen);


void main(void)
{ 
 char buf1[4];
 int ok,i;
 char j;
 FILE *fp;
 char *buf;
 buf=(char *)calloc(1,40);

 irec=0;
 maxrec=0;

 if ((fpHZ=fopen("hzk16","rb"))==NULL)
   { printf("open hzk16 error\n");
    exit(0);
    }
 if ((fp=fopen("asc16","rb"))==NULL)
    { printf("open file error");
    exit(1);
    }
 if (fgets(ASCbuf,4096,fp)==NULL)
    {
      printf("error");
      exit(1);
    }
 whichvga();
 res800();
 ok=0;
/* windows(0,0,800,600); */
/* 图头 */
  _strdate(buf2);
  drwstr(buf2,410,5,1,2,RED,SET);
  _strtime(oldtimebuf); 

 drwbox(SET,lPINK,0,0,800,600);
 drwbox(SET,lPINK,1,1,799,599);
 drwbox(SET,lPINK,2,2,798,598);
 drwfillbox(SET,BLACK,3,3,797,597);

 drwline(SET,lPINK,2,22,799,22);
 drwline(SET,lPINK,2,22,799,22);
 drwfillbox(SET,WHITE,3,3,798,21);
 strcpy(buf,"瓦楞纸板生产线管理系统--湿部状态显示");   
 hzstr(buf,lRED,5,1);
 drwbox(SET,lYELLOW,5,25,795,80);
 drwbox(SET,lYELLOW,6,26,794,79);
 drwfillbox(SET,WHITE,7,27,793,78);

 strcpy(buf,"湖北京山轻工机械股份有限公司");
 drwhzstr(buf,132,36,1,2,RED,SET);
 strcpy(buf,"地址:湖北省京山县新市镇轻机大道");
 drwhzstr(buf,210,62,1,1,RED,SET);

 strcpy(buf,"78"); 
 drwstring(SET,RED,15,buf,450,64);
 strcpy(buf,"号");
 drwhzstr(buf,466,62,1,1,RED,SET);
  
 strcpy(buf,"博成电脑");
 drwhzstr(buf,600,36,2,2,lPINK,SET);


 drwbox(SET,RED,5,86,795,194);
 drwbox(SET,lCYAN,6,87,794,193);
 drwfillbox(SET,lBLUE,7,88,793,192);
  
  _strdate(buf2);
  drwstr(buf2,410,5,1,2,RED,SET);
  _strtime(oldtimebuf); 
  showtime();

 drwbox(SET,GREEN,9,90,575,190);
 drwbox(SET,GREEN,10,91,574,189);
 drwline(SET,GREEN,82,90,82,190);
 drwline(SET,GREEN,205,90,205,190);
 drwline(SET,GREEN,328,90,328,190);
 drwline(SET,GREEN,451,90,451,190);
 drwline(SET,GREEN,9,114,575,114);
 drwline(SET,GREEN,9,152,451,152);
 drwline(SET,GREEN,9,90,82,114);
 strcpy(buf,"上层横切");
 drwhzstr(buf,14,125,1,1,WHITE,SET);
 strcpy(buf,"下层横切");
 drwhzstr(buf,14,163,1,1,WHITE,SET);
 strcpy(buf,"切断长度");
 drwhzstr(buf,111,94,1,1,WHITE,SET);
 strcpy(buf,"切断数量");   
 drwhzstr(buf,234,94,1,1,WHITE,SET);
 strcpy(buf,"剩余长度"); 
 drwhzstr(buf,357,94,1,1,WHITE,SET);
 strcpy(buf,"烘干机限速"); 
 drwhzstr(buf,472,94,1,1,WHITE,SET);

 drwbox(SET,GREEN,576,90,792,190);
 drwbox(SET,GREEN,576,91,791,189);
 drwfillbox(SET,BLACK,577,92,790,188);

 drwfillbox(SET,CYAN,9,200,72,220);
 strcpy(buf,"工号");
 drwfillbox(SET,CYAN,74,200,115,220);
 drwhzstr(buf,76,202,1,1,lPINK,SET);
 strcpy(buf,"定单号");
 drwfillbox(SET,CYAN,117,200,169,220);
 drwhzstr(buf,119,202,1,1,lPINK,SET);
 
 
 drwfillbox(SET,GREEN,9,224,72,244);
 strcpy(buf,"已生产");
 drwhzstr(buf,18,226,1,1,BLACK,SET);
 drwfillbox(SET,RED,9,250,72,270);
 strcpy(buf,"生产中");
 drwhzstr(buf,18,252,1,1,WHITE,SET);
 drwfillbox(SET,BLUE,9,278,72,298);
 strcpy(buf,"待生产");
 drwhzstr(buf,18,280,1,1,RED,SET);

 
 strcpy(buf,"纸质");
 drwfillbox(SET,CYAN,171,200,550,220);
 drwhzstr(buf,353,202,1,1,lPINK,SET);
 
 strcpy(buf,"纸宽");
 drwfillbox(SET,CYAN,552,200,593,220);
 drwhzstr(buf,555,202,1,1,lPINK,SET);

 strcpy(buf,"剖数");
 drwfillbox(SET,CYAN,595,200,636,220);
 drwhzstr(buf,600,202,1,1,lPINK,SET);
 
 strcpy(buf,"长度");
 drwfillbox(SET,CYAN,638,200,679,220);
 drwhzstr(buf,642,202,1,1,lPINK,SET);

 strcpy(buf,"数量");
 drwfillbox(SET,CYAN,681,200,748,220);
 drwhzstr(buf,699,202,1,1,lPINK,SET);

 strcpy(buf,"限速");
 drwfillbox(SET,CYAN,750,200,791,220);
 drwhzstr(buf,757,202,1,1,lPINK,SET);

strcpy(buf1,"ESC");
strcpy(buf,"退出系统");
drwbutton(buf1,buf,690,537,SET,lGREEN);

strcpy(buf1,"Up/Dn");
strcpy(buf,"上/下层选择");
drwbutton1(buf1,buf,690,474,SET,lGREEN);

 drwbox(SET,38,5,474,684,594);
 drwbox(SET,38,6,474,683,593);
 drwfillbox(SET,14,7,475,682,592);
 
 drwline(SET,38,5,514,684,514);
 drwline(SET,38,5,554,684,554);

 drwline(SET,38,77,473,77,594);             
 drwline(SET,38,229,473,229,594);
 drwline(SET,38,381,473,381,594);
 drwline(SET,38,533,473,533,594);

 strcpy(buf,"湿部机型");
 drwhzstr(buf,10,486,1,1,38,SET);
 strcpy(buf,"速度");
 drwhzstr(buf,25,526,1,1,38,SET);
 strcpy(buf,"长度");
 drwhzstr(buf,25,566,1,1,38,SET);

 strcpy(buf,"A");
 drwstr(buf,125,486,1,1,BLACK,SET);
 strcpy(buf,"单面机");
 drwhzstr(buf,133,486,1,1,38,SET);

 strcpy(buf,"C");
 drwstr(buf,277,486,1,1,BLACK,SET);
 strcpy(buf,"单面机");
 drwhzstr(buf,285,486,1,1,38,SET);
 
 strcpy(buf,"B");
 drwstr(buf,429,486,1,1,BLACK,SET);
 strcpy(buf,"单面机");
 drwhzstr(buf,437,486,1,1,38,SET);

 strcpy(buf,"D");
 drwstr(buf,581,486,1,1,BLACK,SET);
 strcpy(buf,"烘干机");
 drwhzstr(buf,589,486,1,1,38,SET);

for(i=0;i<=8;i++)
 if (i==0) 
   disporder(i,GREEN);
 else if (i==1)
   disporder(i,RED);
 else
   disporder(i,BLUE); 


   drwfillcircle(SET,CYAN,630,140,20);
   strcpy(buf11,"正常"); 
   drwhzstr(buf11,678,116,3,3,38,SET);
   
  strcpy(buf2,"下");
  drwhzstr(buf2,26,324,2,1,CYAN,SET);
  strcpy(buf11,"层");
  drwhzstr(buf11,26,392,2,1,CYAN,SET);

uploadorder();
dispallorder(irec,maxrec-1);


strcpy(buf,"tuu.pcx");
pcxmake(0,0,799,599,buf);
 
 while(!ok)
  {  
  while (kbhit())
     {j=getkey();
      switch (j)
       {case esc:
	     ok=1;
	     break;
	     
	case enter:
	    ok=0;
	    break;
       }
     }
     sdelay(60);  
     _strtime(buf);
   } 
  
  fclose(fpHZ);
  restext(); 
 }
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 drwhzstr(char *s,int x,int y,int m,int n,
	     int col,PixelMode mode)
 { unsigned char dot[16][2],qm,wm;
   long offset1;
   register i,j,k,mm,nn,mask;
    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+=15*n;
     }

 }
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,PixelMode 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]=ASCbuf[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;
     }
}
void hzstr(char *s,int k,int x,int y)
{
  int ilen;
  int i,count11,count12;
  char buff[2];
  char buff1[3];
  ilen=strlen(s);
  count11=0;
  count12=0;

  for(i=0;i<ilen;i++)
  {
   if(s[i]<0)
    { buff1[0]=s[i];
      buff1[1]=s[i+1];
      buff1[2]='\0';
      i++;
      drwhzstr(buff1,x+2+count11*16+count12*8,y+4,1,1,k,SET);
      count11++;
    }
   else
      if(s[i]>0)
      { buff[0]=s[i];
	buff[1]='\0';
	drwstr(buff,x+2+count11*16+count12*8,y+4,1,1,k,SET);
	count12++;
      }
   }
}
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*16-26;
  yn=y+2+16+20+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);                 /*x+(j*16)/2-(8*k)/2,y+2,1,1,0,i);*/
hzstr(str,RED,x+18,y+2+16+14);
}
void drwbutton1(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+14;
  yn=y+2+16+20+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);                
hzstr(str,RED,x+5,y+2+16+14);
} 

void drwbutton2(int x1,int y1,int w,int h,PixelMode i,int col)
{
/*  int k,j;
  int xn,yn;
  k=strlen(phstr);
  j=strlen(str);
  xn=x+j*8+14;
  yn=y+2+16+20+16+2;*/
int x,y,xn,yn;
  x1=x-2;
  y1=y-2;
  xn=x1+w-2;
  yn=y1+h-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,col,x+1,y+1,xn-1,yn-1);
/*drwstr(phstr,x+(xn-x)/2-k*16/2,y+4,1,2,BLACK,i); */               
/*hzstr(str,RED,x+5,y+2+16+14);*/
} 
void disporder(int loc,int icolor)
{ int i,j;
  int x,y,xn,yn;

  for(i=0;i<8;i++)
   {x=xorder[i];
    y=yorder[loc];

    xn=xnorder[i];
    yn=y+20;

    drwfillbox(SET,icolor,x,y,xn,yn);
   }
}
void disporder1(int loc,char *str,int icolor,int fcolor)
{ int i,j;
  int x,y,xn,yn;
  int count,ilength;
  int maxlen,strcnt;

  count=0;
  ilength=0;
  strcnt=strlen(str);

  for(i=0;i<8;i++)
   {x=xorder[i];
    y=yorder[loc];

    maxlen=4;
    if(i==1) maxlen=6;
    else if(i==2) maxlen=42;
    else if(i==6) maxlen=6;


    xn=xnorder[i];
    yn=y+20;

    drwfillbox(SET,icolor,x,y,xn,yn);
    if(i<7)
      {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==5) ilength=atoi(tmpbuf);
    if(i==7) sprintf(tmpbuf,"%3d",lmtspeedcal(ilength));

    drwstr(tmpbuf,x+3,y+4,1,1,fcolor,SET);
   }
}

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

 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);
}
void appendorder(char *str)
{int i;
 i=strlen(str);
 if(i>=70)
  {for(i=0;i<70;i++)
    order[irec][maxrec-1]=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';
    disporder1(count+2,buffer,BLUE,WHITE);
    count++;
    if(count>7) break;
   }
 for(i=count;i<8;i++)
   {for(j=0;j<70;j++)
      buffer[i]=' ';
    buffer[70]='\0';
    disporder1(i+2,buffer,BLUE,WHITE);
   }
}
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;

 double dCIR,dANG,dSYN,dMAX,dRAT,dACC;
 int iSPD;

 dCIR=832.0;
 dANG=45.0;
 dSYN=0.0;
 dMAX=30.0;
 dRAT=9.9;
 dACC=150.0;
 iSPD=180;



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

⌨️ 快捷键说明

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