📄 show0623.c
字号:
#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 + -