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

📄 switch.c

📁 linux下的人机对话编程
💻 C
📖 第 1 页 / 共 3 页
字号:
#include<gnome.h>#include"switch.h"#include"main.h"#include"sg.h"#define Sw_Num  17#define DB_REQ   1#define FB_REQ   2#define DBJ  0xaa#define FBJ  0x55#define NUL1   0 GnomeCanvasItem *sw1_DB; GnomeCanvasItem *sw1_FB; GnomeCanvasItem *sw3_DB; GnomeCanvasItem *sw3_FB; GnomeCanvasItem *sw5_DB; GnomeCanvasItem *sw5_FB; GnomeCanvasItem *sw7_DB; GnomeCanvasItem *sw7_FB; GnomeCanvasItem *sw9_DB; GnomeCanvasItem *sw9_FB; GnomeCanvasItem *sw11_DB; GnomeCanvasItem *sw11_FB; GnomeCanvasItem *sw13_DB; GnomeCanvasItem *sw13_FB; GnomeCanvasItem *sw15_DB; GnomeCanvasItem *sw15_FB; GnomeCanvasItem *sw17_DB; GnomeCanvasItem *sw17_FB; GnomeCanvasItem *sw19_DB; GnomeCanvasItem *sw19_FB; GnomeCanvasItem *sw2_DB; GnomeCanvasItem *sw2_FB; GnomeCanvasItem *sw4_DB; GnomeCanvasItem *sw4_FB; GnomeCanvasItem *sw6_DB; GnomeCanvasItem *sw6_FB; GnomeCanvasItem *sw8_DB; GnomeCanvasItem *sw8_FB; GnomeCanvasItem *sw10_DB; GnomeCanvasItem *sw10_FB; GnomeCanvasItem *sw12_DB; GnomeCanvasItem *sw12_FB; GnomeCanvasItem *sw14_DB; GnomeCanvasItem *sw14_FB; int  SwNode_StatTab[Sw_Num][10]={/*道岔静态表*/      0x4000,11,10,38,0x4001,0x2005,0x8001,NUL1,0x4001,0x2005,     /*  C1  */      0x4001,11,12,32,0x4000,0x801a,0x2006,0x4000,NUL1,0x2006,     /*  C3  */      0x4002,11,17,32,0x4003,0x2007,0x8004,NUL1,0x4003,0x2007,    /*  C5  */      0x4003,11,19,26,0x4002,0x8003,0x2008,0x4002,NUL1,0x2008,    /*  C7  */      0x4004,12,17,26,0x4005,0x2008,0x8007,NUL1,0x4005,0x2008,      /*  C9  */      0x4005,12,19,32,0x4004,0x8002,0x2007,0x4004,NUL1,0x2007,    /*  C11 */      0x4006,12,24,32,0x4007,0x2009,0x8009,NUL1,0x4007,0x2009,    /*  C13 */      0x4007,12,26,38,004006,0x8006,0x200a,0x4006,NUL1,0x200a,    /*  C15 */      0x4008,2,24,26,NUL1,0x200b,0x800c,NUL1,0x800d,0x200b,     /*  C17 */      0x4009,3,30,38,NUL1,0x200c,0x800e,NUL1,0x800f,0x200c,     /*  C19 */      0x400a,12,65,38,0x400b,0x2016,0x2014,0x400b,NUL1,0x2014,    /*  C2  */      0x400b,12,63,32,0x400a,0x2016,0x8011,NUL1,0x400a,0x2015,    /*  C4  */      0x400c,11,65,32,0x400d,0x8012,0x2015,0x400d,NUL1,0x2015,    /*  C6  */       0x400d,11,63,38,0x400c,0x2014,0x8010,NUL1,0x400c,0x2014,    /*  C8  */      0x400e,0,59,38,NUL1,0x8013,0x2016,0x8017,NUL1,0x2016,     /*  C10 */      0x400f,1,59,32,NUL1,0x8015,0x2017,0x4010,NUL1,0x2017,     /*  C12 */      0x4010,1,54,26,NUL1,0x8016,0x400f,0x8018,NUL1,0x2017      /*  C14 */      };int Show_Sw(GtkWidget * canvas){  aw=(struct area_window *)shmat(shmid_win, 0, 0);   /* initialize account info in shared memory */ int i,dir=0,type=0;  int Dyn_Code,temp1,temp2;  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=aw->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,i);    }      else if(type==11){      sx= SwNode_StatTab[i][2]*10.0;      sy= SwNode_StatTab[i][3]*10.0;      temp1=SwNode_StatTab[i][7];       temp2=SwNode_StatTab[i][8];       if((temp1==NUL1)&&(temp2!=NUL1)) type=2;       else if((temp1!=NUL1)&&(temp2==NUL1)) type=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,type,canvas,cor,i);      }    else if(type==12){      sx= SwNode_StatTab[i][2]*10.0;      sy= SwNode_StatTab[i][3]*10.0;      temp1=SwNode_StatTab[i][7];      temp2=SwNode_StatTab[i][8];       if((temp1==NUL1)&&(temp2!=NUL1)) type=3;       else if((temp1!=NUL1)&&(temp2==NUL1)) type=1;      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,type,canvas,cor,i);    }      }  return 1;}int  Draw_Sw(double swx,double swy,int direct,int itype,GtkWidget * canvas,gchar*cor,int j){  GnomeCanvasGroup *group;  GnomeCanvasPoints *point1;  GnomeCanvasPoints *point2;  GnomeCanvasPoints *point3;  GnomeCanvasPoints *point4;   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;    if(value==FALSE){   point1=gnome_canvas_points_new(2);   point1->coords[0]=s1x;   point1->coords[1]=s1y;   point1->coords[2]=s2x;   point1->coords[3]=s2y;   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; 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(j==1){ 	if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/   point3=gnome_canvas_points_new(2);   point3->coords[0]=s1x;   point3->coords[1]=s1y;   point3->coords[2]=s2x;   point3->coords[3]=s2y; sw3_DB= 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); point4=gnome_canvas_points_new(2);   point4->coords[0]=s1x;   point4->coords[1]=s1y;   point4->coords[2]=s3x;   point4->coords[3]=s3y;   sw3_FB= 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); if(direct==DB_REQ){   gnome_canvas_item_show(sw3_DB);   gnome_canvas_item_hide(sw3_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw3_FB);   gnome_canvas_item_hide(sw3_DB); }	}	if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/	  { if(direct==DB_REQ){   gnome_canvas_item_show(sw3_DB);   gnome_canvas_item_hide(sw3_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw3_FB);   gnome_canvas_item_hide(sw3_DB); }	  }      }if(j==14){ 	if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/   point3=gnome_canvas_points_new(2);   point3->coords[0]=s1x;   point3->coords[1]=s1y;   point3->coords[2]=s2x;   point3->coords[3]=s2y; sw10_DB= 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); point4=gnome_canvas_points_new(2);   point4->coords[0]=s1x;   point4->coords[1]=s1y;   point4->coords[2]=s3x;   point4->coords[3]=s3y;   sw10_FB= 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); if(direct==DB_REQ){   gnome_canvas_item_show(sw10_DB);   gnome_canvas_item_hide(sw10_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw10_FB);   gnome_canvas_item_hide(sw10_DB); }	}	if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/	  { if(direct==DB_REQ){   gnome_canvas_item_show(sw10_DB);   gnome_canvas_item_hide(sw10_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw10_FB);   gnome_canvas_item_hide(sw10_DB); }	  }      } if(j==3){ 	if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/   point3=gnome_canvas_points_new(2);   point3->coords[0]=s1x;   point3->coords[1]=s1y;   point3->coords[2]=s2x;   point3->coords[3]=s2y; sw7_DB= 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); point4=gnome_canvas_points_new(2);   point4->coords[0]=s1x;   point4->coords[1]=s1y;   point4->coords[2]=s3x;   point4->coords[3]=s3y;   sw7_FB= 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); if(direct==DB_REQ){   gnome_canvas_item_show(sw7_DB);   gnome_canvas_item_hide(sw7_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw7_FB);   gnome_canvas_item_hide(sw7_DB); }	}	if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/	  { if(direct==DB_REQ){   gnome_canvas_item_show(sw7_DB);   gnome_canvas_item_hide(sw7_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw7_FB);   gnome_canvas_item_hide(sw7_DB); }	  }      }if(j==12){ 	if(value==FALSE){/*初始化时来创建定位道岔和反位道岔并判断显示哪一个*/   point3=gnome_canvas_points_new(2);   point3->coords[0]=s1x;   point3->coords[1]=s1y;   point3->coords[2]=s2x;   point3->coords[3]=s2y; sw6_DB= 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); point4=gnome_canvas_points_new(2);   point4->coords[0]=s1x;   point4->coords[1]=s1y;   point4->coords[2]=s3x;   point4->coords[3]=s3y;   sw6_FB= 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); if(direct==DB_REQ){   gnome_canvas_item_show(sw6_DB);   gnome_canvas_item_hide(sw6_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw6_FB);   gnome_canvas_item_hide(sw6_DB); }	}	if(value==TRUE)/*重画来判断显示定位道岔还是反位道岔*/	  { if(direct==DB_REQ){   gnome_canvas_item_show(sw6_DB);   gnome_canvas_item_hide(sw6_FB); } if(direct==FB_REQ){   gnome_canvas_item_show(sw6_FB);   gnome_canvas_item_hide(sw6_DB); }	  }     }       }    else if(itype==1){      s2x=s1x-7;      s2y=s1y;      s3x=s1x-3;      s3y=s1y-9; if(value==FALSE){   point1=gnome_canvas_points_new(2);   point1->coords[0]=s1x;

⌨️ 快捷键说明

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