diff --git a/UML.dia b/UML.dia index 7a11e1ecf0c9287e9854cc1d325ab5c52bb427f0..f9f2622288ad09c5e631c423b1693e4af6b500fd 100644 Binary files a/UML.dia and b/UML.dia differ diff --git a/UML.dia~ b/UML.dia~ deleted file mode 100644 index 32d01b2ddb4a62250cd899166e84d080a9c9ead4..0000000000000000000000000000000000000000 Binary files a/UML.dia~ and /dev/null differ diff --git a/src/tec/letsgoing/ardublock/simulator/Simulator.java b/src/tec/letsgoing/ardublock/simulator/Simulator.java index 93d9ecadc32906d32b3462cb8afe55932ca73499..cab02ba405acfa251eeb922c8876721bf53cddc5 100644 --- a/src/tec/letsgoing/ardublock/simulator/Simulator.java +++ b/src/tec/letsgoing/ardublock/simulator/Simulator.java @@ -9,7 +9,6 @@ import java.util.Vector; import tec.letsgoing.ardublock.simulator.arduino.Arduino; import tec.letsgoing.ardublock.simulator.simcode.SimCode; -import tec.letsgoing.ardublock.simulator.simcode.comm.CodeConnectString; import tec.letsgoing.ardublock.simulator.simcode.comm.CodeSerialPrint; import tec.letsgoing.ardublock.simulator.simcode.control.CodeDelay; import tec.letsgoing.ardublock.simulator.simcode.control.CodeFor; @@ -27,6 +26,7 @@ import tec.letsgoing.ardublock.simulator.view.GUI; /** * @author Lucas */ + public class Simulator implements Runnable, ActionListener { private static Simulator instance; private Arduino arduino; @@ -112,7 +112,6 @@ public class Simulator implements Runnable, ActionListener { gui.dispose(); createSubClasses(); - // FIXME Delete Old Functions on Reload? for (SimCodeFunction function : functionsCode) { arduino.addFunction(function); } @@ -140,7 +139,17 @@ public class Simulator implements Runnable, ActionListener { return true; } - // TODO Function to Reset the saved Functions + /** + * Function to Clear the Storage of saved Functions in Simulator-Class. After + * this a reload is needed to clear the Arduino. + * + * @return boolean=true if the functions where correctly reset + */ + public boolean resetFunctions() { + functionsCode.clear(); + arduino.reset(); + return true; + } public void actionPerformed(ActionEvent arg0) { String command = arg0.getActionCommand(); diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java index ac9ab5dcddbe5c061fd5337e9dda00f1b72040f7..1970fe8693137086ca87c67e858896cecdf7d63d 100644 --- a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java +++ b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java @@ -3,12 +3,10 @@ */ package tec.letsgoing.ardublock.simulator.arduino; -import java.util.Arrays; import java.util.Vector; import tec.letsgoing.ardublock.simulator.simcode.SimCode; import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; -import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; import tec.letsgoing.ardublock.simulator.view.GUI; diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java index 22b8de4caeb0460de2d5eaca6d4b551f433aba42..c3064373464074f132ed78fad44e5b1f9627b241 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java @@ -3,8 +3,6 @@ */ package tec.letsgoing.ardublock.simulator.simcode; -import java.util.Vector; - import tec.letsgoing.ardublock.simulator.arduino.Arduino; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java index ad9ef6591acbba61d91449fc34982e811094dff9..200f52eebbdbfcc64b7dce28340e1bdd4f5eb015 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java @@ -14,14 +14,12 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; * */ public class CodeElse extends CodeTypeIf { - private CodeTypeIf follow; private Vector<SimCode> codeBlocks; public CodeElse(Vector<SimCode> _vec) { codeBlocks = _vec; } - // TODO If kann erweitert werden durch else/elseif @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java index 0937d3413fffea228756156979b489f09847bab6..d441b28353426a5229910f7aeabf097f6e0e7d62 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java @@ -18,24 +18,30 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; public class CodeForCount extends SimCode { private SimTypeInt count; private SimTypeString varname; - private Vector<SimCode> blocks; + private Vector<SimCode> codeblocks; public CodeForCount(SimTypeInt _count, SimTypeString _varname, Vector<SimCode> _blocks) { count = _count; varname = _varname; - blocks = _blocks; + codeblocks = _blocks; } @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { - // TODO Auto-generated method stub + functionHead.createVariable(varname.toString(), new SimTypeInt(0)); + for (int i = 0; i < count.run(_arduino, functionHead).getValue(); i++) { + functionHead.setVariable(varname.toString(), new SimTypeInt(i)); + for (SimCode block : codeblocks) { + block.run(_arduino, functionHead); + } + } return null; } @Override public String toString() { - // TODO Auto-generated method stub - return null; + + return ""; } } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java index 3d7a909ab9b6c7c51adfe7a441b8a8da48c39227..6ca271762ced1e5d0e453d78c3fdca1f86f3447f 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java @@ -3,8 +3,12 @@ */ package tec.letsgoing.ardublock.simulator.simcode.control; +import java.util.Vector; + import tec.letsgoing.ardublock.simulator.arduino.Arduino; import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** @@ -12,17 +16,32 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; * */ public class CodeWhileMillis extends SimCode { + private SimTypeInt duration; + private SimTypeString varname; + private Vector<SimCode> blocks; + + public CodeWhileMillis(SimTypeInt _duration, SimTypeString _varname, Vector<SimCode> _blocks) { + duration = _duration; + varname = _varname; + blocks = _blocks; + } @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { - // TODO Auto-generated method stub + functionHead.createVariable(varname.toString(), new SimTypeInt(_arduino.getMillis())); + int startTime = _arduino.getMillis(); + int dura = duration.run(_arduino, functionHead).getValue(); + while (startTime + dura < _arduino.getMillis()) { + for (SimCode block : blocks) { + block.run(_arduino, functionHead); + } + } return null; } @Override public String toString() { - // TODO Auto-generated method stub - return null; + return ""; } } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java index 32430289642ed3a314e42ac7bb9ec50273e4f5b2..8a29e0f8f3639e139c3f91dc7b6ecf0d4f4b6eda 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java @@ -5,7 +5,6 @@ package tec.letsgoing.ardublock.simulator.simcode.vars; import tec.letsgoing.ardublock.simulator.arduino.Arduino; import tec.letsgoing.ardublock.simulator.simcode.SimCode; -import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool; import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java index 4186814d0b3632d1478900b13445ce904b00b7ac..4c21be5545f33e1d743bd6a7198381d6698bdd7e 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java @@ -5,7 +5,6 @@ package tec.letsgoing.ardublock.simulator.simcode.vars; import tec.letsgoing.ardublock.simulator.arduino.Arduino; import tec.letsgoing.ardublock.simulator.simcode.SimCode; -import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeBool; import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java index b5e1cc6fb0d107b8b0ecadb6203f6c171569ff9e..e5194e8ad6357b61b394bf92ccf139798d9e6efb 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java @@ -15,7 +15,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; public class CodeMillis extends SimCode { @Override - public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { + public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) { return new SimTypeInt(_arduino.getMillis()); }