📄 superpid.c
字号:
n=2;
settextstyle(0,0,3);
while(!kbhit()){
setcolor(n);
outtextxy(150,150,"Welcom to use");
delay(120);
n++;
if(n==16)n=1;
}
getch();
}
/*////////////////////////////////////*/
void pen(int i,int j)
{
setcolor(RED);
setlinestyle(0,0,3);
moveto(pen_x,pen_y);
lineto(pen_x+x(16),pen_y);
lineto(pen_x+x(12),pen_y+y(4));
lineto(pen_x+x(20),pen_y+y(12));
lineto(pen_x+x(12),pen_y+y(20));
lineto(pen_x+x(4),pen_y+y(12));
lineto(pen_x,pen_y+y(16));
lineto(pen_x,pen_y);
setfillstyle(1,14);
floodfill(pen_x+5,pen_y+5,4);
setlinestyle(0,0,1);
}
/*//////////////////////////////*/
void start(void) /*/connect "work" function to INT_1c*/
{
disable();
old_int1c=getvect(0x1c);
setvect(0x1c,work);
enable();
}
/*/////////////////////////////*/
void stop(void) /*/disconnect "work" from INT_1c*/
{
disable();
setvect(0x1c,old_int1c);
enable();
out(0);
}
/*/////////////////////////////*/
float chtofloat(char *fl) //convert a string to a float value.
{
int i,j,dot=20;
float result,sss=1;
result=0.0;
for(i=0;i<10;i++){
if(fl[i]=='.')dot=i;
if(fl[i]==0){
if(i==0)return(0);
else break;
}
}
--i;
if(dot==20)for(j=i;j>=0;j--){
result+=(fl[j]-'0')*sss;
sss*=10;
}
if(dot!=20){
for(j=dot-1;j>=0;j--){
result+=(fl[j]-'0')*sss;
sss*=10;
}
sss=0.1;
for(j=dot+1;j<=i;j++){
result+=(fl[j]-'0')*sss;
sss/=10;
}
}
return(result);
}
/*-------------------------------*/
int load_v(int xx,int yy,float *var,char *fll) //get a floating point
{ char fl[10]; //value from the keyboard
int i=0,j,k;
union abc{
int ddd;
char cl,ch;
}key;
for(j=0;j<10;j++)fl[j]=0;
settextstyle(2,0,5);
for(;i<10;){
kkkk: key.ddd=bioskey(0);
if(key.cl=='\b') /*backspace pressed*/
if(i>0){
--i;
fl[i]=0;
setcolor(7);
bar(xx,yy,xx+127,yy+12);
setcolor(1);
outtextxy(xx,yy,fl);
}
if(key.ch!=0){
if((key.ch>='0'&&key.ch<='9')||key.ch=='.'){
if(i!=9){fl[i]=key.ch;
++i;}
outtextxy(xx,yy,fl);
}
if(key.ch==13){
if(i==0){*var=-1;return 0;}
else break;
}
if(key.ch==27){*var=-1;return(0);}
}
if(i==9)goto kkkk;
}
*var=chtofloat(fl);
strcpy(fll,fl);
return 1;
}
void run(int i,int j,int *go_on,int *un_started)
{
void *pw;
int xx,yy,flag;
float lvset;
char fl[10],c;
xx=x(220);
yy=y(265);
pw=(void*)malloc(imagesize(0,0,200,30));
if(j==0){
switch(i){
case 0: getimage(xx,yy,xx+200,yy+30,pw);
button(xx,yy,200,30,15,8,5);
settextstyle(0,0,1);
setcolor(1);
outtextxy(xx+10,yy+12,"VSET=");
load_v(xx+56,yy+7,&lvset,fl);
putimage(xx,yy,pw,0);
setfillstyle(1,8);
setfillstyle(1,3);
if( lvset>=0&&lvset<=100){
draw_setline(VSET);
VSET=lvset;
draw_setline(VSET);
bar(x(185),y(325),x(260),y(338));
setcolor(8);
outtextxy(x(187),y(325),fl);
}
break;
case 1: getimage(xx,yy,xx+200,yy+30,pw);
button(xx,yy,200,30,15,8,5);
settextstyle(0,0,1);
setcolor(1);
outtextxy(xx+13,yy+13," Ti=");
load_v(xx+56,yy+7,&lvset,fl);
putimage(xx,yy,pw,0);
setfillstyle(1,8);
setfillstyle(1,3);
if(lvset>0){
Ti=lvset;
bar(x(185),y(385),x(260),y(398));
setcolor(8);
outtextxy(x(187),y(385),fl);
}
break;
case 2: if(*un_started){
setfillstyle(1,3);
bar(x(125),y(445),x(260),y(460));
setcolor(14);
settextstyle(0,0,1);
outtextxy(x(157),y(450),"running");
*un_started=0;
start();
}
break;
case 3: P=3.5;
Td=0.5;
Ti=200;
setfillstyle(1,3);
bar(x(185),y(355),x(260),y(368));
bar(x(185),y(385),x(260),y(398));
bar(x(185),y(415),x(260),y(428));
setcolor(8);
settextstyle(2,0,5);
outtextxy(x(187),y(355),"3.5");
outtextxy(x(187),y(385),"200");
outtextxy(x(187),y(415),"0.5");
break;
default:break;
} /*switch*/
}
if(j==1)switch(i){
case 0: getimage(xx,yy,xx+200,yy+30,pw);
button(xx,yy,200,30,15,8,5);
settextstyle(0,0,1);
setcolor(1);
outtextxy(xx+10,yy+12," Kp=");
load_v(xx+56,yy+7,&lvset,fl);
putimage(xx,yy,pw,0);
setfillstyle(1,8);
setfillstyle(1,3);
if( lvset>=0){
P=lvset;
bar(x(185),y(355),x(260),y(368));
setcolor(8);
outtextxy(x(187),y(355),fl);
}
break;
case 1: getimage(xx,yy,xx+200,yy+30,pw);
button(xx,yy,200,30,15,8,5);
settextstyle(0,0,1);
setcolor(1);
outtextxy(xx+10,yy+12," Td=");
load_v(xx+56,yy+7,&lvset,fl);
putimage(xx,yy,pw,0);
setfillstyle(1,8);
setfillstyle(1,3);
if( lvset>=0){
Td=lvset;
bar(x(185),y(415),x(260),y(428));
setcolor(8);
outtextxy(x(187),y(415),fl);
}
break;
case 2: if(*un_started==0){
setfillstyle(1,3);
bar(x(125),y(445),x(260),y(460));
setcolor(8);
settextstyle(0,0,1);
outtextxy(x(160),y(450),"waiting");
*un_started=1;
stop();
}
break;
case 3: getimage(xx,yy,xx+200,yy+30,pw);
button(xx,yy,200,30,15,8,5);
settextstyle(0,0,1);
setcolor(4);
outtextxy(xx+5,yy+6," Are you sure to exit");
outtextxy(xx+38,yy+16," (Y/N)?");
gett: c=getch();
if(c=='n'||c=='N'||c==13||c==27);
else if(c=='y'||c=='Y'){
*go_on=0;
if(*un_started==0)stop();
}
else goto gett;
putimage(xx,yy,pw,0);
break;
default:break;
}/*switch*/
free(pw);
}
/*----------------------*/
void menu(void) /*/anlyse keys inputed, decide what to do*/
{
int key,i=2,j=0,go_on=1,un_started=1;
void *w;
w=(void*)malloc(imagesize(0,0,23,23));
VSET=50;
P=3.5;
Td=0.5;
Ti=200;
draw_setline(VSET);
setfillstyle(1,3);
bar(x(185),y(415),x(260),y(428));
setcolor(8);
settextstyle(2,0,5);
outtextxy(x(187),y(325),"50");
outtextxy(x(187),y(355),"3.5");
outtextxy(x(187),y(385),"200");
outtextxy(x(187),y(415),"0.5");
getimage(pen_x-2,pen_y-2,pen_x+23,pen_y+23,w);
pen(i,j);
while(go_on){
key=bioskey(0); /*get extended scan code*/
key=key&0xff?key&0xff:key>>8; /*get ASCII code or scan code*/
switch(key){
case 72: putimage(pen_x-2,pen_y-2,w,0); /*restore screen*/
i=(i==0)?3:i-1; /*arrow up*/
getimage(pen_x-2,pen_y-2,pen_x+23,pen_y+23,w);
pen(i,j);
break;
case 80: putimage(pen_x-2,pen_y-2,w,0);
i=(i==3)?0:i+1; /* arrow down*/
getimage(pen_x-2,pen_y-2,pen_x+23,pen_y+23,w);
pen(i,j);
break;
case 75: putimage(pen_x-2,pen_y-2,w,0);
j=(j==0)?1:j-1; /*arrow left*/
getimage(pen_x-2,pen_y-2,pen_x+23,pen_y+23,w);
pen(i,j);
break;
case 77: putimage(pen_x-2,pen_y-2,w,0);
j=(j==1)?0:j+1;
getimage(pen_x-2,pen_y-2,pen_x+23,pen_y+23,w);
pen(i,j);
break;
case 13: click(i,j);
run(i,j,&go_on,&un_started);
break;
default:break;
} /*switch*/
} /*menu*/
free(w);
}
void main()
{
char c;
float asdf;
int d=DETECT,m;
initgraph(&d,&m,"c:\\tc\\bgi");
interface();
face(hori,vert);
out(0);
menu();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -