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

📄 patternforprogram.java

📁 主类CNC.java
💻 JAVA
字号:
import java.awt.Color;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JOptionPane;

public class PatternForProgram {  //程序计算模块
	private String inputStr;
	private double x,z;
/*	public static void main(String[] args) {//测试主函数
		PatternForProgram pf=new PatternForProgram("g02x 80z 190");
		pf.CheckProgram();
	}
	*/
	//主体部分
	Sys_runTime runtimePanel;
	public  PatternForProgram(String inputStr,Sys_runTime runtimePanel){//构造时候传入程序代码
		this.inputStr=inputStr;
		this.runtimePanel=runtimePanel;
		x=Sys_runTime.getx();  //x轴坐标
		z=Sys_runTime.getz();  //z轴坐标
	}
	public void CheckProgram(){ //基本算法
		String info="";
		String gcode,xcode,zcode,ucode,wcode;
		//代码格式 g00 x90 z150 x后面不能带有空格
		String chkGstr="([Gg][0-9]*+\\s*([XxUu][-+0-9]*+)*\\s*([ZzWw][-+0-9]*+)*\\s*([Rr][0-9]*+)*)*([Mm][0-9][0-9])*";  //G代码判断公式
		
		//String chkMstr="[Mm][0-9][0-9]";   //辅助代码 m代码判断公式
		boolean g=false;
		if(inputStr.charAt(0)=='G'|| inputStr.charAt(0)=='g'){ //程序第一字母为g,则匹配g代码
		g=true;
		}
		
		//分解代码
		if(inputStr.matches(chkGstr)==false){//匹配表达式
			JOptionPane.showMessageDialog(null,"输入的代码格式无效");
			return;
		}else{ //代码匹配执行,求gcode,或者m代码直接给出结果
			
			if(!g){
				if(inputStr.substring(1).equals("00")){
					JOptionPane.showMessageDialog(null,"你输入的["+inputStr+"]是辅助功能M代码"+"--程序暂停功能");
					return;
				}
				if(inputStr.substring(1).equals("02")){
					JOptionPane.showMessageDialog(null,"你输入的["+inputStr+"]是辅助功能M代码"+"--程序结束功能,程序将返回刀具零点");					
					runtimePanel.setrung92();		
					JOptionPane.showMessageDialog(null,"当前刀具坐标 X : "+Sys_runTime.getx() + "Z :"+ Sys_runTime.getz());
					
					return;
				}

					JOptionPane.showMessageDialog(null,"你输入的["+inputStr+"]是辅助功能M代码"+"--此功能暂不需要");

				
			}else{//g代码
				int start=1;

				gcode=checkNumber(inputStr);
				System.out.println(gcode);
				start+=gcode.length();
				if(gcode.equals("0") || gcode.equals("00")){
					info=info+"快速走刀";
				}
				else	if(gcode.equals("1") || gcode.equals("01")){
					info=info+"正常走刀";
				}
				else if(gcode.equals("2") || gcode.equals("02")){
					info=info+"顺圆方向(逆时针)走刀(走刀轨迹为圆弧)";
				}
				else	if(gcode.equals("3") || gcode.equals("03")){
					info=info+"逆圆方向(顺时针)走刀(走刀轨迹为圆弧)";
				}	else
				{
					info=info+"G"+gcode+"功能暂不需要,请输入G00,G01,G02,G03功能";
					JOptionPane.showMessageDialog(null,info);
				return;
				}
				//判断 xzr
				if(inputStr.charAt(start)=='X' || inputStr.charAt(start)=='x'){
					
					xcode=checkNumber(inputStr.substring(start,inputStr.length()));
					runtimePanel.setxto(Integer.parseInt(xcode));
						start=start+xcode.length()+1; //下一个开始点位置
						info=info+"\r\nx方向移动到" + xcode;
				}
				if(inputStr.charAt(start)=='U' || inputStr.charAt(start)=='u'){
					
					ucode=checkNumber(inputStr.substring(start,inputStr.length()));
						
						start=start+ucode.length()+1; 
						runtimePanel.setxadd(Integer.parseInt(ucode));
						info=info+"\r\nx方向移动了" + ucode;
				}
				if(inputStr.charAt(start)=='W' || inputStr.charAt(start)=='w'){
					
					wcode=checkNumber(inputStr.substring(start,inputStr.length()));
						
						start=start+wcode.length(); 
						runtimePanel.setzadd(Integer.parseInt(wcode));
						info=info+"\r\nZ方向移动了" + wcode;
				}
				if(inputStr.charAt(start)=='Z' || inputStr.charAt(start)=='z'){
					zcode=checkNumber(inputStr.substring(start,inputStr.length()));	
						start=start+zcode.length(); 
						runtimePanel.setyto(Integer.parseInt(zcode));
						info=info+"\r\nZ方向移动到" + zcode;
				}
				
				
				JOptionPane.showMessageDialog(null,info);
			}
			
		}
		
	}
	public String  checkNumber(String str){  //判断代码中的关键字后面的数字位数,递归调用
		String s=str;
		if(!(s.charAt(0)<='9' && s.charAt(0)>='0' ))
	s=s.substring(1,s.length());
	try{
		int i=Integer.parseInt(s);
	}catch(Exception e){	
		s=s.substring(0,s.length()-1);
		//System.out.println(s);
		s=checkNumber(s);		

	}
	return s;
	}
}

⌨️ 快捷键说明

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