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

📄 show0623.c

📁 在以前公司DOS环境下
💻 C
📖 第 1 页 / 共 2 页
字号:
#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"

char RxBuffer[1024+16];
char TxBuffer[512+16];

#define TRUE 1
#define FALSE 0

#define STX 2
#define ETX 3
#define EOT 4
#define ENQ 5
#define ACK 6
#define BS  8
#define NAK 21

#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 kbF8 194
#define kbF9 195

#define kbUp 200
#define kbDn 208
#define kbPgUp 201
#define kbPgDn 209
#define kbEND 207
#define kbHOME 199
#define kbINS 210
#define kbDEL 211

#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 tmpbuf[80]; 
static unsigned long amount;
static char ASC16[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 char order[9][70];
static char newtimebuf[8],oldtimebuf[8];
static int yorder[9]={224,250,278,306,334,362,389,416,444};
static char buf1[80],buf2[80],buf3[80],buf4[80];
static int rcvcount;

static char rcvbuf[250],cutlength[4],cutnumber[10],leftlength[10];
static int cutlength1,cutnumber1;
static int cutlength2,cutnumber2;  
static int ocutlength1,ocutnumber1;
static int ocutlength2,ocutnumber2;  
static long leftlength1,leftlength2,oleftlength1,oleftlength2;
static char rcvchar;

static int Port,iCOM,iCOL,iADS,iSPD,iSEL,iADD,iPOS;
static int icol1,icol2,icol3,icol4,icoll,yy;
static unsigned char far *address,*address1;
static double dCIR,dANG,dSYN,dMAX,dRAT,dACC,dDAT;

static int ispeed,ispeeda,ispeedb,ispeedc,ispeedd;
static int jizhi,jizhia,jizhib,jizhic,istat;
static int ospeed,ospeeda,ospeedb,ospeedc,ospeedd;
static int ojizhi,ojizhia,ojizhib,ojizhic,ostat;

static unsigned char far *p1,*p2;

int drwhzstr(char *s,int x,int y,int m,int n,int col,int mode);
void disporder(int loc,char *str,int icolor,int fcolor);
void drwstr(char *s,int x,int y,int m,int n,int col,int mode);
int lmtspeedcal(int ilen);
int getkey(void);
void showcondt(void);
void showtime(void);
int ErrorCheck(int Code);
int bcccheck(char *str);
void waitbox(char *msg,int ikey,int hzok);
void dispmem(unsigned char far * addresst);
int msgbox(char *msg,int ikey,int hzok);
void shang(void);
void xia(void);
void lmtspeedinit(void);
void dispspeed(int speed,int cl,int x);
void dispjizhi(int jizhi,int cl,int x);
void dispstore(char *s);

int main(void)
{ int i;
  int ok;

  char far *Ptr;
  int  Seg;

  unsigned int ip;
  FILE *fpASC;

   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);
  _strtime(oldtimebuf); 
  whichvga();
  res800();
  strcpy(buf1,"tu.pcx");
  pcxput(SET,0,0,buf1);

  _strdate(buf2);
  drwstr(buf2,410,5,1,2,RED,SET);

  ok=TRUE;
  ispeed=0;
  ispeeda=0;
  ispeedb=0;
  ispeedc=0;
  ispeedd=0;
  jizhi=0;
  jizhia=0;
  jizhib=0;
  jizhic=0;
  istat=0;
  
  ospeed=0;
  ospeeda=0;
  ospeedb=0;
  ospeedc=0;
  ospeedd=0;
  ojizhi=0;
  ojizhia=0;
  ojizhib=0;
  ojizhic=0;
  ostat=0x1000;
  
  cutlength1=0;
  cutlength2=0;
  cutnumber1=0;
  cutnumber2=0;
  leftlength1=0;
  leftlength2=0;

  ocutlength1=0;
  ocutlength2=0;
  ocutnumber1=0;
  ocutnumber2=0;
  oleftlength1=0;
  oleftlength2=0;


  strcpy(buf2,"下");
  dispstore(buf2);
  p1=address1;
  p2=address;
/*  for(i=0;i<700;i++)
    {*p1=32;
     *p2=32;
     p2++;
    p1++;
    }        
  p1=address1;
*/
while (ok)
 {if (kbhit())
   {ip=getkey();
    switch(ip)
     { case kbUp:    
         strcpy(buf3,"上");
         dispstore(buf3);
         p1=address;
         break;
       case kbDn:    
         strcpy(buf3,"下");
         dispstore(buf3);
         p1=address1;
         break;
       case ESC:
         strcpy(buf3,"请确认退出系统?");
         i=msgbox(buf3,1,1);
         if((i=='y') || (i=='Y') || (i==ENTER))
            ok=FALSE;         
         break;
     }
   }
  
  showtime();
  

  rcvchar= (char)SioGetc(Port,0);
  if(rcvchar==STX)
    rcvcount=0;
  else if(rcvchar==ENTER)
    {rcvbuf[rcvcount]='\0';
     if(bcccheck(rcvbuf))
      {for(i=0;i<6;i++)
        buf3[i]=rcvbuf[i];
       buf3[6]='\0';
       ispeeda=atoi(buf3);
         
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[6+i];
       buf3[6]='\0';
       ispeedb=atoi(buf3);
           
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[12+i];
       buf3[6]='\0';
       ispeedc=atoi(buf3);
           
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[18+i];
       buf3[6]='\0';
       ispeedd=atoi(buf3);
           
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[24+i];
       buf3[i]='\0';
       jizhia=atoi(buf3);
       
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[30+i];
       buf3[6]='\0';
       jizhib=atoi(buf3);
           
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[36+i];
       buf3[6]='\0';
       jizhic=atoi(buf3);
           
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[42+i];
       buf3[6]='\0';
       istat=atoi(buf3);
      
       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[48+i];
       buf3[6]='\0';
       ispeed=atoi(buf3);

       for(i=0;i<6;i++)
        buf3[i]=rcvbuf[54+i];
       buf3[6]='\0';
       jizhi=atoi(buf3);

      if(ispeeda!=ospeeda)
       {dispspeed(ispeeda,icol1,77);
        ospeeda=ispeeda;
       }
      
      if(jizhia!=ojizhia)
       {dispjizhi(jizhia,icol1,77);
        ojizhia=jizhia;
       }
      
      if(ispeedb!=ospeedb)
       {dispspeed(ispeedb,icol2,381);
        ospeedb=ispeedb;
       }
      
      if(jizhib!=ojizhib)
       {dispjizhi(jizhib,icol2,381);
        ojizhib=jizhib;
       }
      
      if(ispeedc!=ospeedc)
       {dispspeed(ispeedc,icol3,229);
        ospeedc=ispeedc;
       }
      
      if(jizhic!=ojizhic)
       {dispjizhi(jizhic,icol3,229);
        ojizhic=jizhic;
       }
      
      if(ispeedd!=ospeedd)
       {dispspeed(ispeedd,icol4,533);
        drwline(SET,RED,684,514,684,554);
        drwline(SET,RED,683,514,683,554);
        ospeedd=ispeedd;
       }



       if(ispeed!=ospeed)
        {dispspeed(ispeed,icoll,yy);
         if(iCOL==4)
          {drwline(SET,RED,684,514,684,554);
           drwline(SET,RED,683,514,683,554);
          }
         ospeed=ispeed;
        }
       if(jizhi!=ojizhi)
        { if(iCOL!=4)
         { dispjizhi(jizhi,icoll,yy);
           ojizhi=jizhi;
         }
        } 
      
     }
    }
      else if(rcvchar>=' ')
        rcvbuf[rcvcount++]=rcvchar;
      
 }

 restext();
 SioDone(Port);
}
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<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 drwstr(char *s,int x,int y,int m,int n,int col,int 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]=ASC16[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;
     }

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

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;
}
int drwhzstr(char *s,int x,int y,int m,int n,
             int col,int mode)
 { unsigned char dot[16][2],qm,wm;
   long offset1;
   register i,j,k,mm,nn,mask;
   FILE *fpHZ;

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

⌨️ 快捷键说明

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