📄 set1.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
#define address 0xd0000400;
#define address1 0xd0000000;
static char tmpbuf[80];
static int length,m1,n1;
static unsigned long amount;
static char ASC16[4096];
static int xorder[7]={75,117,171,552,595,638,750},f;
static int xnorder[7]={115,169,550,593,636,748,791};
static int byorder[][2]={{224,244},{250,270},{278,298},{306,326},{334,354},{362,382},{389,409},{416,436},{444,464}};
static char tmp1[40];
static char order[9][70];
static char newtimebuf[8],oldtimebuf[8];
static char str1[36]="0123456789abcdefghijklmnopqrstuvwxyz";
static char order1[70];
static int yorder[9]={224,250,278,306,334,362,389,416,444};
static char currentorder[70],oldorder[70],buf2[80],buf3[80],buf4[80];
static int tmcount,FirstChangeOk,rcvcount,tmcounter,orderok;
static char rcvbuf[80],cutlength[4],cutnumber[10],leftlength[10];
static char cutlength1[4],cutnumber1[10],leftlength1[10];
static char cutlength2[4],cutnumber2[10],leftlength2[10];
static char rcvchar;
static int Port,iCOM;
static int ispeed;
static char *buf,buf1[4];
static unsigned char far *p1;
void arrow(int x1,int x2,int y1,int y2,int col,int high);
int drwhzstr(char *s,int x,int y,int m,int n,int col,int mode);
void hzstr(char *s,int k,int x,int y) ;
void drwbutton1(char *phstr,char *str,int x,int y,PixelMode i,int col11) ;
void drwbutton2(char *phstr,char *str,int x,int y,PixelMode i,int col11);
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 xszt(char *str,int i);
void showtime(void);
int ErrorCheck(int Code);
int bcccheck(char *str);
void waitbox(char *msg,int ikey,int hzok);
void disppic(void);
void dispmem(unsigned char * addresst);
int msgbox(char *msg,int ikey,int hzok);
void shang(void);
void xia(void);
int main(void)
{ int i,f;
int ok,sendok,maxtm;
/* int arrowcount;
char buf111[8];
*/
char far *Ptr;
int Seg,ok1,ok2;
unsigned int p;
FILE *fpASC;
time_t tmstart,tmend;
buf=(char *)calloc(1,80);
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();
sendok=TRUE;
ispeed=0;
disppic();
_strdate(buf);
drwstr(buf,410,5,1,2,RED,SET);
ok=TRUE;
ok2=TRUE;
f=0;
strcpy(buf,"停止");
xszt(buf,RED);
/* arrowcount=0;
strcpy(buf111,"tu.pcx");
pcxmake(9,byorder[arrowcount][0]-3,72,byorder[arrowcount][1]+3,buf111);
drwfillbox(SET,BLACK,9,byorder[arrowcount][0]-3,72,byorder[arrowcount][1]+3);
arrow(10,55,byorder[arrowcount][0]+3,byorder[arrowcount][1]-3,arrowcount+33,4);
*/
drwfillbox(SET,BLACK,20,320,40,420);
strcpy(buf,"下");
drwhzstr(buf,26,324,2,1,38,SET);
strcpy(buf,"层");
drwhzstr(buf,26,392,2,1,38,SET);
while (ok)
{
p1=(unsigned char far *)address1;
showtime();
if (kbhit())
{p=getkey();
switch(p)
{ case kbUp:
ok1=TRUE;
drwfillbox(SET,BLACK,20,320,40,420);
strcpy(buf,"上");
drwhzstr(buf,26,324,2,1,38,SET);
strcpy(buf,"层");
drwhzstr(buf,26,392,2,1,38,SET);
while (ok1)
{
p1=(unsigned char far *)address;
showtime();
if (kbhit())
{ p=(unsigned int)getkey();
switch(p)
{ case kbDn:
ok1=FALSE;
break;
case ESC:
strcpy(tmp1,"请确认退出系统?");
i=msgbox(tmp1,1,1);
if((i=='y') || (i=='Y') || (i==ENTER))
{ ok1=FALSE;
ok=FALSE;
ok2=FALSE;
}
break;
}
}
}
/* if (arrowcount!=0)
{ pcxput(SET,9,byorder[arrowcount][0]-3,buf111);
pcxmake(9,byorder[arrowcount-1][0]-3,72,byorder[arrowcount-1][1]+3,buf111);
drwfillbox(SET,BLACK,9,byorder[arrowcount-1][0]-3,72,byorder[arrowcount-1][1]+3);
arrow(10,55,byorder[arrowcount-1][0]+3,byorder[arrowcount-1][1]-3,arrowcount+33,3);
}
if (arrowcount==0)
arrowcount=0;
else arrowcount=arrowcount-1;
*/
drwfillbox(SET,BLACK,20,320,40,420);
strcpy(buf,"下");
drwhzstr(buf,26,324,2,1,38,SET);
strcpy(buf,"层");
drwhzstr(buf,26,392,2,1,38,SET);
break;
/* if (arrowcount!=8)
{if (arrowcount==0)
{pcxput(SET,9,byorder[arrowcount][0]-3,buf111);
pcxmake(9,byorder[arrowcount+1][0]-3,72,byorder[arrowcount+1][1]+3,buf111);
drwfillbox(SET,BLACK,9,byorder[arrowcount+1][0]-3,72,byorder[arrowcount+1][1]+3);
}
else{pcxput(SET,9,byorder[arrowcount][0]-3,buf111);
pcxmake(9,byorder[arrowcount+1][0]-3,72,byorder[arrowcount+1][1]+3,buf111);
drwfillbox(SET,BLACK,9,byorder[arrowcount+1][0]-3,72,byorder[arrowcount+1][1]+3);
}
}
arrow(10,55,byorder[arrowcount+1][0]+3,byorder[arrowcount+1][1]-3,arrowcount+33,3);
if (arrowcount==8)
arrowcount=8;
else arrowcount=arrowcount+1;
*/
break;
case ESC:
strcpy(tmp1,"请确认退出系统?");
i=msgbox(tmp1,1,1);
if((i=='y') || (i=='Y') || (i==ENTER))
ok=FALSE;
break;
}
time(&tmstart);
}
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';
}
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);
}
}
}
free(buf);
restext();
}
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<7;i++)
{x=xorder[i];
y=yorder[loc];
maxlen=4;
if(i==1) maxlen=6;
else if(i==2) maxlen=42;
else if(i==5) maxlen=6;
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]=' ';
tmpbuf[maxlen]='\0';
count=count+maxlen;
if (loc==1)
{if (i==4)
length=atoi(tmpbuf);
/* sprintf(buf2,"%3d",lmtspeedcal(ilength));
drwfillbox(SET,lBLUE,452,115,573,188);
drwstr(buf2,496,144,1,1,RED,SET);
*/
if (i==5)
amount=(unsigned long)atol(tmpbuf);
}
}
if(i==4) ilength=atoi(tmpbuf);
if(i==6) sprintf(tmpbuf,"%3d",lmtspeedcal(ilength));
drwstr(tmpbuf,x+3,y+2,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) || (ilen<500)) return 0;
knifecircle=9350.0;
lengthref=ilen*10.0;
shearlength=75.0/360.0*knifecircle;
lengthgap=lengthref-knifecircle;
synangle=90.0;
knifemaxspeed=15.0*knifecircle*10.0/6.0/5.88;
lmtacc=150.0;
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 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 arrow(int x1,int x2,int y1,int y2,int col,int high)
{
int ok;
int xs,ys,ye;
ok=TRUE;
drwfillbox(SET,col,x1,y1,x2,y2);
xs=x2;
ys=y1-high;
/* xe=xs; */
ye=y2+high;
while (ok)
{
drwline(SET,col,xs,ys,xs,ye);
xs=xs+1;
/* xe=xs; */
ys=ys+1;
ye=ye-1;
if (ys==ye)
{drwline(SET,col,xs,ys,xs,ye);
ok=FALSE;
}
}
}
void drwbutton2(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);*/
/*drwstring(i,5,8,text7,732,554); */
/*drwhzstr(str,x+2,y+2+16+14,1,1,38,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); /*x+(j*16)/2-(8*k)/2,y+2,1,1,0,i);*/
/*drwstring(i,5,8,text7,732,554); */
/*drwhzstr(str,x+2,y+2+16+14,1,1,38,i); */
hzstr(str,RED,x+5,y+2+16+14);
}
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;
}
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]=(char)fgetc(fpHZ);
mask=0x80;
for(k=0;k<=7;k++)
{if (dot[i][j]&mask)
{for(nn=0;nn<n;nn++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -