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

📄 g_input.c

📁 数控系统的模拟系统,用SSTC51仿真单片机,仿真数控机床切割,能执行数控机床代码.
💻 C
📖 第 1 页 / 共 2 页
字号:
  //G代码输入
void G_input(void)	 
 {     
     s=&buf;
   WriteCommandLCM(0x04,1);	
  Lcd_print("1.New ");
   Lcd_print1(1,0,"2.Open 3.Look_pref ");   
   WriteCommandLCM(0x0F,1);	
 WriteCommandLCM(0x06,1);
 LocateXY(0,0);
 xunhao1=0x30;
 xunhao=0x30;
   i=10;
  ir_data[2]=GB_UP;
   while(1) 
             {
         	      if(ir_data[2]==EXIT) goto e;
			d: 
				{  LocateXY(0,0);
                                       while(!(ir_data[2]== ENTER))
                                                 { 
                                                 if(ir_data[2]== GB_DOWN) goto t;
                                                  if(ir_data[2]==EXIT) goto e;
							  }
					                Lcd_print("N00   MDI"); 
							  LocateXY(0,1);
							  buf_0xff();  
							 break;
									  
				 }
			
                     t:  	
				     {  LocateXY(0,1);
                                       while(!(ir_data[2]== ENTER))
                                                 { 
                                                 if(ir_data[2]== GB_UP) goto d;
							if(ir_data[2]== RIGHT)  	goto q;				 
							 if(ir_data[2]==EXIT) goto e;					 
							}
								   
					                Lcd_print("N00   MDI"); 
					                  display_first_buf();				   
						          break;
						}
		q: 	
				{  LocateXY(7,1);
                                       while(!(ir_data[2]== ENTER))
                                                 { 
                                                 if(ir_data[2]== LEFT) goto t;
							 if(ir_data[2]==EXIT) goto e;					 
							}
								   
					                Lcd_print("N00   MDI"); 
					                	s=buf;
	                                               while(!(*s==ENTER))
		                                             {
		                                               display_buf();
		                                                  s++;
		                                                         }				   
						          break;		  
		                               }
      }
   			 
	 ir_flag=0;
	 ir_data[2]=0;
		while(1) 
           	   {
         	   if(ir_data[2]==EXIT) goto b;
		   key_handle();
         	   }	   
           b: ir_flag=0;
           ir_data[2]=0;
	 WriteCommandLCM(0x0c,1);	   
   Lcd_print1(1,0,"Save code?      ");                          
               while(1)   
			   	{                                                                                           /*是否保存代码?*/
			 
		  	       if(ir_data[2]==ENTER)   {  SaveGcodeToI2C();   break;}
					
				 if(ir_data[2]==EXIT) break;	

			              }


       e:   ir_flag=0;
}	

//按键处理
  void key_handle(void)	 //安键处理
{	
   unsigned char du_data;
   if(ir_flag) 
  	   
  	{
  	   	switch(ir_data[2])
  	   	
  	   {	 
		  
        	      case  ENTER:
                           
                                  if(s==buf) break; 
        		            if(*s==ENTER)	break; 
						if(*s==0xff)
        				//  if((*s==0xff)&&(*(--s)==ENTER) )
						  //	{s++;break;}
        			{
        			WriteCommandLCM(0x01,1);		   
        			serial_number_down() ;
        		    	  *s=ENTER; 
        		      s--;
        		       i=0;
        			LocateXY(i,1);	
					} 
        			  break;
  	   	  	case G91:	
			    {
					Lcd_print1(1,i,"G91");
				    	     *s= G91; 
					s++;
					i+=3;
					   }
				 break;
				 case G90:	
			    {
					Lcd_print1(1,i,"G90");
		 		  *s=G90; 
					s++;
					i+=3;
					   }
				 break;
			case M02:	
			    { Lcd_print1(1,i,"M02");
			     *s=M02; 
					s++;
					i+=3; 
					   }
			     break;
				 case M47:	
			            Lcd_print1(1,i,"M47");
				     *s=M47; 
					s++;
					i+=3; 
					   
			           break;
			 case M46:	
			              Lcd_print1(1,i,"M46");
				      *s=M46; 
					s++;
					i+=3; 
					   
			     break;
			case G00:	
			             Lcd_print1(1,i,"G00");
				      *s=G00; 
					s++;
					i+=3; 
					  
			     break;

			case G01:
			 Lcd_print1(1,i,"G01");	
					 *s=G01; 
					s++;
					i+=3; 
				break;
            
			case G02:
  	   	  	  Lcd_print1(1,i,"G02");	
			   	  	*s=G02; 
					s++; 	
					i+=3;	
				
  	   	  	     break;
  	   	  	
			case G03:
  	   	                  Lcd_print1(1,i,"G03");	  
				*s=G03; 
					s++; 	
					i+=3;
			  
  	   	  	     break;
			case G04:
  	   	                   Lcd_print1(1,i,"G04");	 
				    *s=G04; 
					s++; 	i+=3;	
  	   	  	     break;
  	   	  	case FuHao:
  	   	 
                                    if(*(--s)!=X1&&*s!=Y1&&*s!=I&&*s!=K){s++;break;}
                                                       { s++;
                                 				  DisplayOneChar(i, 1,0X2D);														
                                      				    *s=FuHao; 
                                      					s++; 
                                      					i++;	
                                      			}
  	   	  	     break;
			case SPEED:
  	   	  	       
					     du_data=*(--s);
						s++;
					  if(!(du_data==Y1||du_data==X1||du_data==SPEED))
					      { 
						     DisplayOneChar(i, 1,0X46);
					         *s=SPEED;
						  s++; 
					      i++;
						   }
					   	
					 
  	   	  	              break;
		         case GB_UP:   
                                    pre_up();  
                                         break;

  	   	  	    case    GB_DOWN:
                                  		  forward_down();
				            break;
					
			      case X1:
					
					     du_data=*(--s);
						s++;
					  if(!(du_data==Y1||du_data==X1||du_data==SPEED))
					      { 
						     DisplayOneChar(i, 1,0X58);
					         *s=X1;
							   s++; 
					 	         i++;
						   }
			   break;
					   
			   case Y1:
   				   
					 	du_data=*(--s);
						s++;
					 if(!(du_data==Y1||du_data==X1||du_data==SPEED))
					      { DisplayOneChar(i, 1,0X59);
					        *s=Y1;
						s++	; 		      
					       i++;
						   }
				 break;
				case I:
   				   
					 	du_data=*(--s);
						s++;
				if(du_data>=0x00&&du_data<=0x09)
					      { 
					      DisplayOneChar(i, 1,0X49);
					        *s=I;
						s++	; 		      
					       i++;
						   }
				 break;	
				 case K:
   				   
					 	du_data=*(--s);
						s++;
					 if(du_data>=0x00&&du_data<=0x09)
					      { DisplayOneChar(i, 1,0X4B);
					        *s=K;
						s++	; 		      
					       i++;
						   }
				 break;
			  case LEFT:

			                               if(s==buf||i==0)  break;				 
              					du_data=*(--s);
              					    s++;
                                                 if(du_data==G00||du_data==G01||du_data==G02||du_data==G03||du_data==G04||du_data==M02||du_data==M46||du_data==M47||du_data==G91||du_data==G90)
              									{
              									i-=3;
              									s--; 
											 LocateXY(i,1);	
              									             					                           
              									}
              											 	
              					else
              						{	
              						      s--;
              						       i--;
								 LocateXY(i,1);		   
              						              					        			   
              						}
              				 WriteCommandLCM(0x06,1);
						      WriteCommandLCM(0x0F,1);
					  break;	
					case RIGHT:
					            if(i==15)  break;
						 	WriteCommandLCM(0x06,1);   
							du_data=*s;
              				 	if(du_data==G00||du_data==G01||du_data==G02||
								du_data==G03||du_data==G04||du_data==M02||
								du_data==M46||du_data==M47||
								du_data==G91||du_data==G90)
						 		{
						 		      s++;
						                    i+=3;
									LocateXY(i,1);			
							             
							         }


               					else {
               						s++;
               					       i++;
								   LocateXY(i,1);	
               					            }	 
						 WriteCommandLCM(0x06,1);
						      WriteCommandLCM(0x0F,1);
						 break;	  
						
					  case DEL:			                   /*删除 //把后面的复盖前面的*/
						 Del_one_char();
						 break;	 
					 case INSERT:			                   /*插入 前插*/
						 Insert_one_char();
						 break;	 	 	 	 
					  case K0:
					  	           if(s==buf) break;
                                     		du_data=*(--s) ;
                                     		 s++;
                                            if(du_data==X1||du_data==Y1||du_data==SPEED||du_data==FuHao||du_data==I||du_data==K||du_data==G04||(0x0A>du_data&&du_data>=0x00))		   
                                          {
                                     	       DisplayOneChar(i, 1,0x30);
                                     	              *s=0X00; 
                                     		i++;
                                     		s++;
                                     		}						
        					   	break;	
				           case K1:
						   	  if(s==buf) break;
                                            du_data=*(--s) ;
                                        		 s++;
                                   if(du_data==X1||du_data==Y1||du_data==SPEED||du_data==FuHao||du_data==I||du_data==K||du_data==G04||(0x0A>du_data&&du_data>=0x00))	      
                                                {
                                        	       DisplayOneChar(i, 1,0x31);
                                        	        *s=0X01; 
                                        		i++;
                                        		s++;
                                        		}					 
                                             break;
						 case  K2:
						 	  if(s==buf) break;

⌨️ 快捷键说明

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