diff --git a/src/com/t_oster/liblasercut/drivers/IModelaMill.java b/src/com/t_oster/liblasercut/drivers/IModelaMill.java index e6704092f2b9d6203d38fe3b045f2ea706a09f72..7df54e2df392af3eff972332867ffda8630eb88e 100644 --- a/src/com/t_oster/liblasercut/drivers/IModelaMill.java +++ b/src/com/t_oster/liblasercut/drivers/IModelaMill.java @@ -38,8 +38,10 @@ import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; import java.util.Arrays; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; +import java.util.Map; /** * @@ -65,9 +67,17 @@ public class IModelaMill extends LaserCutter private static String HOSTNAME = "Hostname/IP"; private static String PORT = "port"; - - private String hostname = "localhost"; - private int port = 5000; + private static String BED_WIDTH = "bed width"; + private static String BED_HEIGHT = "bed height"; + + private Map<String, Object> properties = new LinkedHashMap<String, Object>(); + public IModelaMill() + { + properties.put(BED_WIDTH, (Double) 85d); + properties.put(BED_HEIGHT, (Double) 55d); + properties.put(HOSTNAME, "file:///dev/usb/lp0"); + properties.put(PORT, (Integer) 5000); + } private void writeInitializationCode(PrintStream out) { @@ -207,19 +217,27 @@ public class IModelaMill extends LaserCutter { // software resolution in NC-Code mode: 0.001mm/step = 0.000036 inches/step // means 1000 steps per mm - return Arrays.asList(new Double[]{Util.dpmm2dpi(1000d)}); + return Arrays.asList(new Double[]{100d, 200d, 300d, 400d, 500d, 1000d, 1200d, Util.dpmm2dpi(1000d)}); } @Override public double getBedWidth() { - return 86; + if (properties.get(BED_WIDTH) == null) + { + properties.put(BED_WIDTH, (Double) 85d); + } + return (Double) properties.get(BED_WIDTH); } @Override public double getBedHeight() { - return 55; + if (properties.get(BED_HEIGHT) == null) + { + properties.put(BED_HEIGHT, (Double) 55d); + } + return (Double) properties.get(BED_HEIGHT); } @Override @@ -242,38 +260,24 @@ public class IModelaMill extends LaserCutter @Override public String[] getPropertyKeys() { - return new String[]{HOSTNAME, PORT}; + return properties.keySet().toArray(new String[0]); } @Override public void setProperty(String key, Object value) { - if (HOSTNAME.equals(key)) - { - hostname = (String) value; - } - else if (PORT.equals(key)) - { - port = (Integer) value; - } + properties.put(key, value); } @Override public Object getProperty(String key) { - if (HOSTNAME.equals(key)) - { - return hostname; - } - else if (PORT.equals(key)) - { - return (Integer) port; - } - return null; + return properties.get(key); } private void sendGCode(byte[] gcode, ProgressListener pl, List<String> warnings) throws IOException, URISyntaxException { + String hostname = (String) properties.get(HOSTNAME); pl.taskChanged(this, "connecting..."); if ("stdout".equals(hostname)) { @@ -311,7 +315,7 @@ public class IModelaMill extends LaserCutter else { Socket s = new Socket(); - s.connect(new InetSocketAddress(hostname, port), 3000); + s.connect(new InetSocketAddress(hostname, (Integer) properties.get(PORT)), 3000); pl.taskChanged(this, "sending..."); s.getOutputStream().write(gcode); s.close();