Migrating files from the the Honnun project to a separate project focused on the CNC foamcutter.
This commit is contained in:
312
Software_folder/foamMain.java
Normal file
312
Software_folder/foamMain.java
Normal file
@@ -0,0 +1,312 @@
|
||||
|
||||
/**
|
||||
* @author Luis
|
||||
*
|
||||
*/
|
||||
import java.io.*;
|
||||
|
||||
public class foamMain {
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
// TODO Auto-generated method stub
|
||||
// args.length is equivalent to argc in C
|
||||
FileOutputStream out; // declare a file output object
|
||||
PrintWriter p; // declare a print stream object
|
||||
|
||||
// System.out.println("TRAZA 0");
|
||||
// File 1
|
||||
FileInputStream fstream; // declare a file input object
|
||||
BufferedReader in; // declare a file input object
|
||||
|
||||
// File 2
|
||||
FileInputStream fstream2; // declare a file input object
|
||||
BufferedReader in2; // declare a file input object
|
||||
|
||||
if (args.length == 2){
|
||||
try{
|
||||
// Open the file that is the first
|
||||
// command line parameter
|
||||
fstream = new FileInputStream(args[0]);
|
||||
fstream2 = new FileInputStream(args[1]);
|
||||
|
||||
// Convert our input stream to a DataInputStream
|
||||
in = new BufferedReader(new InputStreamReader(fstream));
|
||||
in2 = new BufferedReader(new InputStreamReader(fstream2));
|
||||
|
||||
// Tokenizer to split the sentence:
|
||||
StreamTokenizer st = new StreamTokenizer(in);
|
||||
StreamTokenizer st2 = new StreamTokenizer(in2);
|
||||
|
||||
// Create a new file output stream connected to "output.gcode"
|
||||
out = new FileOutputStream("output.gcode");
|
||||
|
||||
// Connect print stream to the output stream
|
||||
p = new PrintWriter( out );
|
||||
|
||||
// Command
|
||||
st.nextToken();
|
||||
st2.nextToken();
|
||||
|
||||
//FIRST LINE
|
||||
//System.out.println("G1 X-1400 Y700 A-1400 B-700 F3000.0");
|
||||
// CONFIGURATION G20 G17 G90 M3
|
||||
|
||||
System.out.println("G20");
|
||||
System.out.println("G17");
|
||||
System.out.println("G90");
|
||||
System.out.println("M3");
|
||||
|
||||
/*p.println("G20");
|
||||
p.println("G17");
|
||||
p.println("G90");
|
||||
p.println("M3");*/
|
||||
|
||||
// Continue to read lines while there are still some left to read
|
||||
while (in.ready() && in2.ready()){
|
||||
|
||||
// First buffer for X and Y
|
||||
String buffer1 = new String();
|
||||
// Second buffer for A and B
|
||||
String buffer2 = new String();
|
||||
// Third buffer to mix them
|
||||
String buffer3;
|
||||
//Check if there is enumeration code before the instruction
|
||||
if (st.sval.contains("N"))
|
||||
st.nextToken();
|
||||
if (st2.sval.contains("N"))
|
||||
st2.nextToken();
|
||||
|
||||
// If the first command is G we compare if not we print the sentence.
|
||||
if (((st.sval.compareTo("G00")==0)||(st.sval.compareTo("G0")==0)) && ((st2.sval.compareTo("G00")==0)||(st2.sval.compareTo("G0")==0))||((st.sval.compareTo("G01")==0)||(st.sval.compareTo("G1")==0)) && ((st2.sval.compareTo("G01")==0)||(st2.sval.compareTo("G1")==0))){
|
||||
|
||||
/////// File 1 ///////
|
||||
if (st.sval.contains("G")){
|
||||
buffer1 = buffer1.concat(st.sval+" "); // G1
|
||||
st.nextToken();
|
||||
}else if(st.sval.contains("M")){// G1
|
||||
buffer1 = buffer1.concat(st.sval+" "); // G1
|
||||
st.nextToken();
|
||||
}
|
||||
|
||||
if(st.sval.contains("Z")){
|
||||
while (!((st.sval.contains("G")||st.sval.contains("M")))){
|
||||
st.nextToken();
|
||||
buffer1 = "";
|
||||
}
|
||||
if (st.sval.contains("G")){
|
||||
buffer1 = buffer1.concat(st.sval+" "); // G1
|
||||
st.nextToken();
|
||||
}else if(st.sval.contains("M")){// G1
|
||||
buffer1 = buffer1.concat(st.sval+" "); // G1
|
||||
st.nextToken();
|
||||
}
|
||||
}
|
||||
if (st.sval.contains("X")||st.sval.contains("Y")){
|
||||
buffer1 = buffer1.concat(st.sval+" "); // X or Y
|
||||
st.nextToken();
|
||||
}
|
||||
if (st.sval.contains("X")||st.sval.contains("Y")){
|
||||
buffer1 = buffer1.concat(st.sval+" "); // X or Y
|
||||
st.nextToken();
|
||||
}else if (st.sval.contains("Z")){
|
||||
st.nextToken();
|
||||
}
|
||||
if (st.sval.contains("X")||st.sval.contains("Y")){
|
||||
buffer1 = buffer1.concat(st.sval+" "); // X or Y
|
||||
st.nextToken();
|
||||
}else if (st.sval.contains("Z")){
|
||||
st.nextToken();
|
||||
}
|
||||
buffer3 = new String(buffer1); // Mix buffer1 and 2
|
||||
|
||||
|
||||
//// File 2 ////
|
||||
if (st2.sval.contains("G")){
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // G2
|
||||
st2.nextToken(); // X
|
||||
}else if(st2.sval.contains("M")){// M
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // M
|
||||
st2.nextToken();
|
||||
}
|
||||
|
||||
// change X per A, Y per B (first round)
|
||||
if(st2.sval.contains("Z")){
|
||||
while (!((st2.sval.contains("G")||st2.sval.contains("M")))){
|
||||
st2.nextToken();
|
||||
buffer2 = "";
|
||||
}
|
||||
if (st2.sval.contains("G")){
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // G1
|
||||
st2.nextToken();
|
||||
}else if(st2.sval.contains("M")){// G1
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // G1
|
||||
st2.nextToken();
|
||||
}
|
||||
}
|
||||
if (st2.sval.contains("X")){
|
||||
st2.sval = st2.sval.replace('X','A');
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // A
|
||||
buffer3 = buffer3.concat(st2.sval+" "); // mix buffer 1 and 2
|
||||
st2.nextToken();
|
||||
}
|
||||
if (st2.sval.contains("Y-")){
|
||||
st2.sval = st2.sval.replace("Y-","B");
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // B
|
||||
buffer3 = buffer3.concat(st2.sval+" "); // mix buffer 1 and 2
|
||||
st2.nextToken();
|
||||
}else if (st2.sval.contains("Z")){
|
||||
st2.nextToken();
|
||||
}
|
||||
if(st2.sval.contains("Y")){
|
||||
st2.sval = st2.sval.replace("Y","B-");
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // B-
|
||||
buffer3 = buffer3.concat(st2.sval+" "); // mix buffer 1 and 2
|
||||
st2.nextToken();
|
||||
}else if(st2.sval.contains("Z")){
|
||||
st2.nextToken();
|
||||
}
|
||||
|
||||
// change X per A, Y per B (second round)
|
||||
if (st2.sval.contains("X")){
|
||||
st2.sval = st2.sval.replace('X','A');
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // A
|
||||
buffer3 = buffer3.concat(st2.sval+" "); // mix buffer 1 and 2
|
||||
st2.nextToken();
|
||||
}else if (st2.sval.contains("Y-")){
|
||||
st2.sval = st2.sval.replace("Y-","B");
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // B
|
||||
buffer3 = buffer3.concat(st2.sval+" "); // mix buffer 1 and 2
|
||||
st2.nextToken();
|
||||
}else if(st2.sval.contains("Y")){
|
||||
st2.sval = st2.sval.replace("Y","B-");
|
||||
buffer2 = buffer2.concat(st2.sval+" "); // B-
|
||||
buffer3 = buffer3.concat(st2.sval+" "); // mix buffer 1 and 2
|
||||
st2.nextToken();
|
||||
}else if(st2.sval.contains("Z")){
|
||||
st2.nextToken();
|
||||
}
|
||||
|
||||
//Compare F: To mix times
|
||||
if ((st.sval.contains("F"))&&(st2.sval.contains("F"))){
|
||||
//st.nextToken();
|
||||
buffer1 = buffer1.concat(st.sval); // F
|
||||
//st2.nextToken();
|
||||
buffer2 = buffer2.concat(st2.sval); // F
|
||||
|
||||
if (st.sval.compareTo(st2.sval)==0){ // Same time
|
||||
buffer3 = buffer3.concat(st.sval);
|
||||
System.out.println(buffer3);
|
||||
//p.println (buffer3);
|
||||
|
||||
//prepare for next loop
|
||||
st.nextToken();
|
||||
st2.nextToken();
|
||||
}else if (st.sval.compareTo(st2.sval)<0){ // Less time
|
||||
|
||||
// Calculate time
|
||||
st.sval = st.sval.replace('F','0');
|
||||
st2.sval = st2.sval.replace('F','0');
|
||||
double aDouble = Double.parseDouble(st.sval);
|
||||
double bDouble = Double.parseDouble(st2.sval);
|
||||
double valueF = (bDouble-aDouble);
|
||||
st.sval = String.valueOf(valueF);
|
||||
buffer3 = buffer3.concat('F'+st.sval);
|
||||
//Print the result
|
||||
System.out.println(buffer3);
|
||||
//p.println (buffer3);
|
||||
|
||||
//prepare for next loop
|
||||
st.nextToken();
|
||||
st2.nextToken();
|
||||
}else if (st.sval.compareTo(st2.sval)>0){ // More time
|
||||
// Calculate time
|
||||
st.sval = st.sval.replace('F','0');
|
||||
st2.sval = st2.sval.replace('F','0');
|
||||
double aDouble = Double.parseDouble(st.sval);
|
||||
double bDouble = Double.parseDouble(st2.sval);
|
||||
double valueF = (aDouble-bDouble);
|
||||
st.sval = String.valueOf(valueF);
|
||||
buffer3 = buffer3.concat('F'+st.sval);
|
||||
//Print the result
|
||||
System.out.println(buffer3);
|
||||
//p.println (buffer3);
|
||||
|
||||
//prepare for next loop
|
||||
st.nextToken();
|
||||
st2.nextToken();
|
||||
}else{ // If I cannot mix them
|
||||
System.out.println(buffer1); // 1
|
||||
//p.println (buffer1);
|
||||
System.out.println(buffer2); // 2
|
||||
//p.println (buffer2);
|
||||
//prepare for next loop
|
||||
st.nextToken();
|
||||
st2.nextToken();
|
||||
}
|
||||
}else{
|
||||
System.out.println(buffer3+"F3000.0");
|
||||
//p.println (buffer3+"F3000.0");
|
||||
}
|
||||
}else{
|
||||
//Check if there is enumeration code before the instruction
|
||||
while (st.sval.contains("N"))
|
||||
st.nextToken();
|
||||
while (st2.sval.contains("N"))
|
||||
st2.nextToken();
|
||||
do{
|
||||
buffer1 = buffer1.concat(st.sval+" ");
|
||||
st.nextToken();
|
||||
st2.nextToken();
|
||||
}while (!(st.sval.contains("N"))&&((st.sval==null)||!(st.sval.contains("G"))||!(st.sval.contains("M"))));
|
||||
System.out.println(buffer1);
|
||||
//p.println (buffer1);
|
||||
|
||||
//prepare for next loop*/
|
||||
|
||||
}
|
||||
|
||||
/*switch (){
|
||||
case 'G':
|
||||
System.out.println(st.sval);
|
||||
break;
|
||||
default:
|
||||
System.out.println("Nothing");
|
||||
}//*/
|
||||
|
||||
//TO DO: Mix lines, checking time
|
||||
// Take number after F of input1
|
||||
// Take number after F of input2
|
||||
// If they are the same:
|
||||
// Take everything before F of input1
|
||||
// take everything after X
|
||||
// Change X per A, change Y per B
|
||||
// If is not the same
|
||||
// Put input1 the same
|
||||
// put the input2 chaging X per A and Y per B
|
||||
|
||||
// Print line to the file
|
||||
//p.println (in.readLine());
|
||||
//p.println (in2.readLine());
|
||||
}
|
||||
//LAST LINE */
|
||||
//p.println ("G1 X1200 Y-700 A1200 B700 F3000.0");
|
||||
//System.out.println("G1 X1200 Y-700 A1200 B700 F3000.0");
|
||||
|
||||
//Closing files
|
||||
in.close();
|
||||
in2.close();
|
||||
out.close();
|
||||
p.close();
|
||||
|
||||
} catch (Exception e){
|
||||
//System.out.println("Error writing to file");
|
||||
System.err.println("Error writing to file");
|
||||
}
|
||||
}else
|
||||
System.out.println("Invalid parameters");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user