?? patternforprogram.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 + -