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

📄 2.c

📁 linux下的人机对话编程
💻 C
📖 第 1 页 / 共 2 页
字号:
#include<gnome.h>#include"popmenu.h"#include"frame.h"#include"SySInfo.h"#include"sg.h"#include"socket.h"#define OK 20#define FAIL 21                                                                              int D1=0x8000,D2=0x8010,D3=0x8001,D4=0x8011,D5=0x8002,D6=0x8012,D7=0x8003,D8=0x8013;        int D9=0x8004,D11=0x8005,D13=0x8006,D15=0x8007,D17=0x8008,D19=0x8009;        int X=0x800a,X1=0x8015,X3=0x8016,X4=0x8017,X5=0x8018,XD=0x800b,XTA=0x8019,XDZA=0x801a;        int XLZA=0x801c,SLZA=0x801b,STA=0x801d,S=0x8014,S2=0x800e,S3=0x800c,S4=0x800f,S5=0x800d;GnomeCanvasItem*Item_D1,*Item_D3,*Item_D5,*Item_D7,*Item_D9,*Item_D11,*Item_D13,*Item_D15,*Item_D17,*Item_D19,*Item_D2,*Item_D4,*Item_D6,*Item_D8,*Item_X,*Item_XD,*Item_S3,*Item_S5,*Item_S2,*Item_S4,*Item_S,*Item_X1,*Item_X3,*Item_X4,*Item_X5;/*闪灯控制开关量*/gboolean  buttonD1=FALSE, buttonD2=FALSE, buttonD3=FALSE, buttonD4=FALSE, buttonD5=FALSE, buttonD6=FALSE, buttonD7=FALSE, buttonD8=FALSE, buttonD9=FALSE, buttonX=FALSE, buttonD11=FALSE, buttonXD=FALSE, buttonD13=FALSE,buttonS=FALSE, buttonD15=FALSE, buttonD17=FALSE, buttonD19=FALSE; int Button1,Button2,M,id; gboolean  rebutton=FALSE;static int Com_Code[5]={0,0,0,0,0};void Call_B18(){  int i;           Com_Code[0]=0x300e;           Com_Code[1]=0;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;	   Button1=0;	   Button2=0;	   for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);}void Call_B14(){   int i;           Com_Code[0]=0x3010;           Com_Code[1]=0;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;           Button1=0;	   Button2=0;	   for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);}void Call_B15(){  int i;           Com_Code[0]=0x3011;           Com_Code[1]=0;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;           Button1=0;	   Button2=0;	   for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);}void Call_B16(){  int i;           Com_Code[0]=0x300c;           Com_Code[1]=0;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;           Button1=0;	   Button2=0;	   for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);}void Call_B17(){  int i;          Com_Code[0]=0x3022;           Com_Code[1]=0;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;           Button1=0;	   Button2=0;	   for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);}void Call_C(int Bt1){  switch(Bt1){  case 0x300e: {           Call_B18();	   break;}case 0x3010: {           Call_B14();	   break;}case 0x3011: {           Call_B15();	   break;}case 0x300c: {           Call_B16();	   break;}case 0x3022: {           Call_B17();	   break;}  default :    break;  }  }gboolean MousePressed(GtkButton*button,gpointer data){/*响应按钮操作*/   id=GPOINTER_TO_INT(data);            	GdkColor downcolor;	GtkStyle *downstyle;       	gint i;	          downcolor.red=0x0000;	downcolor.green=0x0000;	downcolor.blue=0xffff;	downstyle=gtk_style_copy(gtk_widget_get_style(button));	for(i=0;i<5;i++)	  downstyle->bg[i]=downcolor;	gtk_widget_set_style(button,downstyle);        if(rebutton==FALSE)       {int i;       for(i=0;i<5;i++)       Com_Code[i]=0;       Button1=id;       g_print("is %d\n",Button1);       rebutton=TRUE;         if((Button1==0x300e)||(Button1==0x3010)||(Button1==0x3011)||(Button1==0x300c)||(Button1==0x3022)) Call_C(Button1);      }  else{       Button2=id;       rebutton=FALSE;      }     if((Button1!=0)&&(Button2!=0))      {       if((Button1>=0x8000)&&(Button1<=0x8018)) Call_A();       else if((Button1>=0x3001)&&(Button1<=0x3025)) Call_B();       else {}      }     return TRUE;}       gint show_D1(){  if(buttonD1==FALSE)   { gnome_canvas_item_hide(Item_D1);     buttonD1=TRUE;   }  else   {gnome_canvas_item_show(Item_D1);     buttonD1=FALSE;   } return 1;}   gint show_D3(){  if(buttonD3==FALSE)   { gnome_canvas_item_hide(Item_D3);     buttonD3=TRUE;   }  else   {gnome_canvas_item_show(Item_D3);     buttonD3=FALSE;   } return 1;}   gint show_D5(){  if(buttonD5==FALSE)   { gnome_canvas_item_hide(Item_D5);     buttonD5=TRUE;   }  else   {gnome_canvas_item_show(Item_D5);     buttonD5=FALSE;   } return 1;}   gint show_D7(){  if(buttonD7==FALSE)   { gnome_canvas_item_hide(Item_D7);     buttonD7=TRUE;   }  else   {gnome_canvas_item_show(Item_D7);     buttonD7=FALSE;   } return 1;}   gint show_D9(){  if(buttonD9==FALSE)   { gnome_canvas_item_hide(Item_D9);     buttonD9=TRUE;   }  else   {gnome_canvas_item_show(Item_D9);     buttonD9=FALSE;   } return 1;}   gint show_D11(){  if(buttonD11==FALSE)   { gnome_canvas_item_hide(Item_D11);     buttonD11=TRUE;   }  else   {gnome_canvas_item_show(Item_D11);     buttonD11=FALSE;   } return 1;}   gint show_D13(){  if(buttonD13==FALSE)   { gnome_canvas_item_hide(Item_D13);     buttonD13=TRUE;   }  else   {gnome_canvas_item_show(Item_D13);     buttonD13=FALSE;   } return 1;}   gint show_D15(){  if(buttonD15==FALSE)   { gnome_canvas_item_hide(Item_D15);     buttonD15=TRUE;   }  else   {gnome_canvas_item_show(Item_D15);     buttonD15=FALSE;   } return 1;}   gint show_D17(){  if(buttonD17==FALSE)   { gnome_canvas_item_hide(Item_D17);     buttonD17=TRUE;   }  else   {gnome_canvas_item_show(Item_D17);     buttonD17=FALSE;   } return 1;}   gint show_D19(){  if(buttonD19==FALSE)   { gnome_canvas_item_hide(Item_D19);     buttonD19=TRUE;   }  else   {gnome_canvas_item_show(Item_D19);     buttonD19=FALSE;   } return 1;}   gint show_D2(){  if(buttonD2==FALSE)   { gnome_canvas_item_hide(Item_D2);     buttonD2=TRUE;   }  else   {gnome_canvas_item_show(Item_D2);     buttonD2=FALSE;   } return 1;}   gint show_D4(){  if(buttonD4==FALSE)   { gnome_canvas_item_hide(Item_D4);     buttonD4=TRUE;   }  else   {gnome_canvas_item_show(Item_D4);     buttonD4=FALSE;   } return 1;}   gint show_D6(){  if(buttonD6==FALSE)   { gnome_canvas_item_hide(Item_D6);     buttonD6=TRUE;   }  else   {gnome_canvas_item_show(Item_D6);     buttonD6=FALSE;   } return 1;}   gint show_D8(){  if(buttonD8==FALSE)   { gnome_canvas_item_hide(Item_D8);     buttonD8=TRUE;   }  else   {gnome_canvas_item_show(Item_D8);     buttonD8=FALSE;   } return 1;}   gint show_X(){  if(buttonX==FALSE)   { gnome_canvas_item_hide(Item_X);     buttonX=TRUE;   }  else   {gnome_canvas_item_show(Item_X);     buttonX=FALSE;   } return 1;}   gint show_XD(){  if(buttonXD==FALSE)   { gnome_canvas_item_hide(Item_XD);     buttonXD=TRUE;   }  else   {gnome_canvas_item_show(Item_XD);     buttonXD=FALSE;   } return 1;}   gint show_S(){  if(buttonS==FALSE)   { gnome_canvas_item_hide(Item_S);     buttonS=TRUE;   }  else   {gnome_canvas_item_show(Item_S);     buttonS=FALSE;   } return 1;}   gboolean PressedLamp(GtkWidget*widget,GdkEvent*event,gpointer data)/*响应信号灯操作*/{     gint timer_show,i;  id=GPOINTER_TO_INT(data);    if(event->type==GDK_BUTTON_PRESS)  {      GdkEventButton*buttonevent=(GdkEventButton*)event;      if(buttonevent->button==1)    {                   switch(id)        { case 0x8000:	    {              Item_D1=widget;              timer_show=gtk_timeout_add(1000,show_D1,NULL); 	      Oprate_Data();                 break;	    }         case 0x8001:	    {              Item_D3=widget;                  timer_show=gtk_timeout_add(1000,show_D3,NULL);	      Oprate_Data();              break;	    }         case 0x8002:	    {              Item_D5=widget;                  timer_show=gtk_timeout_add(1000,show_D5,NULL);	      Oprate_Data();              break;	    }        case 0x8003:	    {              Item_D7=widget;                  timer_show=gtk_timeout_add(1000,show_D7,NULL);	      Oprate_Data();              break;	    }        case 0x8004:	    {              Item_D9=widget;                  timer_show=gtk_timeout_add(1000,show_D9,NULL);	      Oprate_Data();              break;	    }        case 0x8005:	    {              Item_D11=widget;                  timer_show=gtk_timeout_add(1000,show_D11,NULL);	      Oprate_Data();              break;	    }         case 0x8006:	    {              Item_D13=widget;                  timer_show=gtk_timeout_add(1000,show_D13,NULL);	      Oprate_Data();              break;	    }         case 0x8007:	    {              Item_D15=widget;                  timer_show=gtk_timeout_add(1000,show_D15,NULL);	      Oprate_Data();              break;	    }         case 0x8008:	    {              Item_D17=widget;                  timer_show=gtk_timeout_add(1000,show_D17,NULL);	      Oprate_Data();              break;	    }         case 0x8009:	    {              Item_D19=widget;                  timer_show=gtk_timeout_add(1000,show_D19,NULL);	      Oprate_Data();              break;	    }         case 0x800a:	    {              Item_X=widget;                  timer_show=gtk_timeout_add(1000,show_X,NULL);	      Oprate_Data();              break;	    }         case 0x800b:	    {              Item_XD=widget;                  timer_show=gtk_timeout_add(1000,show_XD,NULL);	      Oprate_Data();              break;	    }        	 case 0x8010:	    {              Item_D2=widget;                  timer_show=gtk_timeout_add(1000,show_D2,NULL);	      Oprate_Data();              break;	    }	 case 0x8011:	    {              Item_D4=widget;                  timer_show=gtk_timeout_add(1000,show_D4,NULL);	      Oprate_Data();              break;	    }	 case 0x8012:	    {              Item_D6=widget;                  timer_show=gtk_timeout_add(1000,show_D6,NULL);	      Oprate_Data();              break;	    }	 case 0x8013:	    {              Item_D8=widget;                  timer_show=gtk_timeout_add(1000,show_D8,NULL);	      Oprate_Data();              break;	    }	 case 0x8014:	    {              Item_S=widget;                  timer_show=gtk_timeout_add(1000,show_S,NULL);	      Oprate_Data();              break;	    }	 default:              break;	}          }  }     } int Oprate_Data(){ if(rebutton==FALSE)       {int i;       for(i=0;i<5;i++)       Com_Code[i]=0;       Button1=id;       rebutton=TRUE;      if((Button1==0x300e)||(Button1==0x3010)||(Button1==0x3011)||(Button1==0x300d)||(Button1==0x300f)) Call_C(Button1);      }  else{       Button2=id;       rebutton=FALSE;      }     if((Button1!=0)&&(Button2!=0))      {       if((Button1>=0x8000)&&(Button1<=0x8018)) Call_A();       else if((Button1>=0x3001)&&(Button1<=0x3025)) Call_B();       else {}      }}	   void Call_A(){int i;  if((Button2>=0x8000)&&(Button2<=0x8018))    {       M=Valid_Oper1(Button1,Button2);       g_print("%d\n",M);       if(M==21)         {         /* SySInfo(1);	    Send_To(FM,Com_Code);*/       }       else if(M==20)      {           Com_Code[0]=0x3001;           Com_Code[1]=Button1;           Com_Code[2]=0;           Com_Code[3]=Button2;           Com_Code[4]=1;	   for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);       socket_com("192.168.1.5",8000,Com_Code[1]);	/*	if(Work_Cpu==TRUE)           send_to(Work_Cpu,Com_Code);        else            send_to(Back_Cpu,Com_Code);	   send_to(FM,Com_Code);*/      }    Button1=0;Button2=0;  }    else   {     /* SySInfo(1);	Send_To(FM,Com_Code);*/   }    }     void Call_B(){  if(Button1==0x3002) Call_B1();/*总取消*/  else if((Button1==0x3003)||(Button1==0x3013)) Call_B2();/*总人解  */  else if(Button1==0x300a) Call_B3();/*进路故障*/  else if(Button1==0x3012) Call_B4();/*重复开放*/    else if(Button1==0x3022) Call_B5();/*关信号*/  else if(Button1==0x3006) Call_B6();/*道岔单锁*/  else if(Button1==0x3007) Call_B7();/*道岔单解*/  else if(Button1==0x3008) Call_B8();/*道岔封锁*/  else if(Button1==0x3009) Call_B9();/*道岔解封*/  else if(Button1==0x3004) Call_B10();/* 总定位*/  else if(Button1==0x3005) Call_B11();/* 总反位*/  else if(Button1==0x300d) Call_B12();/*S引导总锁闭*/  else if(Button1==0x300f) Call_B13();/*X引导总锁闭*/  /*  else SySInfo(1);*/}void Call_B1(){int i;  if((Button2>=0x8000)&&(Button2<=0x8018))   {           Com_Code[0]=0x3002;           Com_Code[1]=Button2;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;         for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);            /* if(Work_Cpu==TRUE)     send_to(Work_Cpu,Com_Code);    else send_to(Back_Cpu,Com_Code);    send_to(FM,Com_Code);*/ } else{           Com_Code[0]=0x3002;           Com_Code[1]=Button2;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;      for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);                }}void Call_B2(){int i; if((Button2>=0x8000)&&(Button2<=0x8018))    {      if(Button1==0x3003){           Com_Code[0]=0x3003;           Com_Code[1]=Button2;           Com_Code[2]=0;           Com_Code[3]=0;           Com_Code[4]=1;          for(i=0;i<5;i++)	     g_print("Com_Code[%d]=%d\n",i,Com_Code[i]);               /*  if(Work_Cpu==TRUE)

⌨️ 快捷键说明

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