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

📄 switch.c

📁 linux下的人机对话编程
💻 C
字号:
#include<gnome.h>#include"switch.h"#include"sg.h"#define Sw_Num  17#define DB_REQ   1#define FB_REQ   2#define DBJ  0xaa#define FBJ  0x55#define NUL1   0int  SwNode_StatTab[Sw_Num][9]={/*道岔静态表*/      0x4000,2,10,38,0,0x2005,0x8001,NUL1,0x4001,     /*  C1  */      0x4001,0,12,32,0,0x801a,0x8002,0x4000,NUL1,     /*  C3  */       0x4002,2,17,32,0,0x2007,0x8004,NUL1,0x4003,    /*  C5  */       0x4003,0,19,26,0,0x8003,0x2008,0x4002,NUL1,    /*  C7  */      0x4004,3,17,26,0,0x0000,0x8008,NUL1,0x4005,      /*  C9  */      0x4005,1,19,32,0,0x8002,0x2007,0x4005,NUL1,    /*  C11 */      0x4006,3,24,32,0,0x2009,0x8009,NUL1,0x4007,    /*  C13 */      0x4007,1,26,38,0,0x8006,0x200a,0x4006,NUL1,    /*  C15 */      0x4008,2,24,26,0,0x200b,0x800c,NUL1,0x800d,     /*  C17 */      0x4009,3,30,38,0,0x200c,0x800e,NUL1,0x800f,     /*  C19 */      0x400a,1,65,38,0,0x2017,0x2015,0x400b,NUL1,    /*  C2  */      0x400b,3,63,32,0,0x2016,0x8001,NUL1,0x400a,    /*  C4  */      0x400c,0,65,32,0,0x8012,0x2016,0x400d,NUL1,    /*  C6  */  /*0x400d???? */      0x400d,2,63,38,0,0x2015,0x8010,NUL1,0x400c,    /*  C8  */      0x400e,0,59,38,0,0x8013,0x2017,0x8017,NUL1,     /*  C10 */      0x400f,1,59,32,0,0x8015,0x2018,0x4010,NUL1,     /*  C12 */      0x4010,1,54,26,0,0x801b,NUL1,0x8018,0x400f      /*  C14 */      }; int  SwNode_DynTab[Sw_Num][5]={/* 道岔动态表*/      0x4000,0xaa,0xaa,0x55,0xaa,                        /* C1 */      0x4001,0xaa,0xaa,0x55,0xaa,                         /* C3 */       0x4002,0x55,0xaa,0x55,0xaa,                        /* C5 */      0x4003,0xaa,0xaa,0x55,0xaa,                        /* C7 */      0x4004,0xaa,0xaa,0x55,0xaa,                        /* C9 */      0x4005,0x55,0xaa,0x55,0xaa,                        /* C11*/      0x4006,0x55,0xaa,0x55,0xaa,                        /* C13*/      0x4007,0x55,0xaa,0x55,0xaa,                        /* C15*/      0x4008,0xaa,0xaa,0x55,0xaa,                        /*C17*/      0x4009,0xaa,0xaa,0x55,0xaa,                        /*C19*/      0x400a,0xaa,0xaa,0x55,0xaa,                        /* C2*/      0x400b,0x55,0xaa,0x55,0xaa,                        /* C4*/      0x400c,0x55,0xaa,0x55,0xaa,                        /* C6*/      0x400d,0xaa,0xaa,0x55,0xaa,                        /*C8 */       0x400e,0x55,0xaa,0x55,0xaa,                        /*C10*/      0x400f,0x55,0xaa,0x55,0xaa,                        /*C12*/      0x4010,0x55,0xaa,0x55,0xaa                        /*C14*/  };int Show_Sw(GtkWidget * canvas){  int i,dir=0,type=0;  unsigned char Dyn_Code;  double sx,sy;  gchar*cor;      if(Sw_Num<=1)  return 0;  for(i=0;i<Sw_Num;i++){    type= SwNode_StatTab[i][1];/*道岔类型*/    Dyn_Code=SwNode_DynTab[i][1];    if(type<4){      sx= SwNode_StatTab[i][2]*10.0;      sy= SwNode_StatTab[i][3]*10.0;      if(Dyn_Code==DBJ) dir=DB_REQ, cor=color[5] ;      else if(Dyn_Code==FBJ) dir=FB_REQ,cor=color[3];      else dir=3;      Draw_Sw(sx,sy,dir,type,canvas,cor);    }      else if(type==11){      sx= SwNode_StatTab[i][2]*10.0;      sy= SwNode_StatTab[i][3]*10.0;      if(Dyn_Code==DBJ) dir=DB_REQ, cor=color[5] ;      else if(Dyn_Code==FBJ) dir=FB_REQ,cor=color[6];      else dir=3;      Draw_Sw(sx,sy,dir,0,canvas,cor);      }    else if(type==12){    sx= SwNode_StatTab[i][2]*10.0;      sy= SwNode_StatTab[i][3]*10.0;      if(Dyn_Code==DBJ) dir=DB_REQ, cor=color[5] ;      else if(Dyn_Code==FBJ) dir=FB_REQ,cor=color[6];      else dir=3;      Draw_Sw(sx,sy,dir,3,canvas,cor);      }  }  return 1;}int  Draw_Sw(double swx,double swy,int direct,int itype,GtkWidget * canvas,gchar*cor){  GnomeCanvasGroup *group;  GnomeCanvasPoints *point1;  GnomeCanvasPoints *point2;  GnomeCanvasPoints *point3;  GnomeCanvasPoints *point4;  GnomeCanvasItem *line1;  GnomeCanvasItem *line2;  group=gnome_canvas_root(GNOME_CANVAS(canvas));  double s1x,s1y,s2x,s2y,s3x,s3y/*c1x,c1y,c2x,c2y,c3x,c3y,c4x,c4y,c5x,c5y,c6x,c6y*/;    s1x=swx;    s1y=swy;    if(itype==0){      s2x=s1x-7;      s2y=s1y;      s3x=s1x-3;      s3y=s1y+9;    }    else if(itype==1){      s2x=s1x-7;      s2y=s1y;      s3x=s1x-3;      s3y=s1y-9;    }    else if(itype==2){      s2x=s1x+7;      s2y=s1y;      s3x=s1x+3;      s3y=s1y-9;    }    else if(itype==3){      s2x=s1x+7;      s2y=s1y;      s3x=s1x+3;      s3y=s1y+9;    }   point1=gnome_canvas_points_new(2);   point1->coords[0]=s1x;   point1->coords[1]=s1y;   point1->coords[2]=s2x;   point1->coords[3]=s2y;   line1= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point1,"fill_color", "black","width_units",4.0,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point1); point2=gnome_canvas_points_new(2);   point2->coords[0]=s1x;   point2->coords[1]=s1y;   point2->coords[2]=s3x;   point2->coords[3]=s3y; line2= gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point2,"fill_color", "black","width_units",4.0,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point2); if(direct==DB_REQ){  point3=gnome_canvas_points_new(2);   point3->coords[0]=s1x;   point3->coords[1]=s1y;   point3->coords[2]=s2x;   point3->coords[3]=s2y;   gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point3,"fill_color", "blue","width_units",4.0,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point3); /* c1x=s2x-2.0; c1y=s2y-2.0; c2x=s2x+2.0; c2y=s2y+2.0;  gnome_canvas_item_new(group,                        gnome_canvas_ellipse_get_type(),		        "x1",c1x,"y1",c1y,"x2",c2x,"y2",c2y,"fill_color",cor,		        NULL);*/ } else if(direct==FB_REQ){ point4=gnome_canvas_points_new(2);   point4->coords[0]=s1x;   point4->coords[1]=s1y;   point4->coords[2]=s3x;   point4->coords[3]=s3y;   gnome_canvas_item_new(group,gnome_canvas_line_get_type(),                      "points",point4,"fill_color", "blue","width_units",4.0,                      "join_style", GDK_CAP_BUTT,"line_style",                      GDK_LINE_SOLID,NULL); gnome_canvas_points_unref(point4); /* c3x=s3x-2.0; c3y=s3y-2.0; c4x=s3x+2.0; c4y=s3y+2.0;  gnome_canvas_item_new(group,                        gnome_canvas_ellipse_get_type(),		        "x1",c3x,"y1",c3y,"x2",c4x,"y2",c4y,"fill_color",cor,		        NULL);*/ } /* c5x=swx-2.0; c5y=swy-2.0; c6x=swx+2.0; c6y=swy+2.0;  gnome_canvas_item_new(group,                        gnome_canvas_ellipse_get_type(),		        "x1",c5x,"y1",c5y,"x2",c6x,"y2",c6y,"fill_color",cor,		        NULL);*/ return 1;  }

⌨️ 快捷键说明

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