From 157e375de49d6484f9df12c0da837c10bed3545f Mon Sep 17 00:00:00 2001 From: Lucas Stratmann <lucas.stratmann@student.reutlingen-university.de> Date: Wed, 16 Sep 2020 15:27:00 +0200 Subject: [PATCH] Bugfixes and Autoformat --- .../ardublock/simulator/Simulator.java | 31 ++++--- .../ardublock/simulator/arduino/Arduino.java | 14 +-- .../ardublock/simulator/arduino/Pin.java | 3 +- .../ardublock/simulator/arduino/Variable.java | 4 +- .../ardublock/simulator/simcode/SimCode.java | 5 +- .../simcode/comm/CodeConnectString.java | 3 +- .../simcode/comm/CodeSerialPrint.java | 1 + .../simulator/simcode/control/CodeDelay.java | 1 + .../simulator/simcode/control/CodeElse.java | 5 +- .../simulator/simcode/control/CodeElseIf.java | 4 +- .../simulator/simcode/control/CodeFor.java | 1 + .../simcode/control/CodeForCount.java | 5 +- .../simulator/simcode/control/CodeIf.java | 8 +- .../simulator/simcode/control/CodeWhile.java | 1 + .../simcode/control/CodeWhileMillis.java | 8 +- .../simcode/datatypes/SimTypeBool.java | 1 + .../simcode/datatypes/SimTypeIf.java | 2 +- .../simcode/datatypes/SimTypeInt.java | 3 +- .../simcode/datatypes/SimTypeString.java | 1 + .../functions/CodeExecuteFunction.java | 1 + .../simcode/functions/SimCodeFunction.java | 15 ++-- .../simulator/simcode/io/CodeAnalogRead.java | 3 +- .../simulator/simcode/io/CodeAnalogWrite.java | 1 + .../simulator/simcode/io/CodeDigitalRead.java | 1 + .../simcode/io/CodeDigitalWrite.java | 1 + .../simulator/simcode/logic/CodeAND.java | 1 + .../simcode/logic/CodeBoolEqual.java | 1 + .../simcode/logic/CodeBoolUnequal.java | 1 + .../simcode/logic/CodeIntBigger.java | 1 + .../simcode/logic/CodeIntBiggerEqual.java | 1 + .../simulator/simcode/logic/CodeIntEqual.java | 1 + .../simcode/logic/CodeIntSmaller.java | 1 + .../simcode/logic/CodeIntSmallerEqual.java | 1 + .../simcode/logic/CodeIntUnequal.java | 1 + .../simulator/simcode/logic/CodeNOT.java | 1 + .../simulator/simcode/logic/CodeOR.java | 1 + .../simcode/logic/CodeStringEqual.java | 1 + .../simcode/logic/CodeStringUnequal.java | 1 + .../simulator/simcode/math/CodeAbs.java | 1 + .../simulator/simcode/math/CodeAdd.java | 1 + .../simulator/simcode/math/CodeDivison.java | 1 + .../simulator/simcode/math/CodeLimit.java | 1 + .../simulator/simcode/math/CodeMap.java | 1 + .../simulator/simcode/math/CodeMap10to8.java | 4 +- .../simulator/simcode/math/CodeMax.java | 1 + .../simulator/simcode/math/CodeMin.java | 1 + .../simulator/simcode/math/CodeMinus.java | 1 + .../simulator/simcode/math/CodeModulo.java | 1 + .../simulator/simcode/math/CodeProduct.java | 1 + .../simulator/simcode/math/CodeRandMax.java | 1 + .../simcode/math/CodeRandMinMax.java | 1 + .../simcode/vars/CodeBoolCreate.java | 1 + .../simulator/simcode/vars/CodeBoolGet.java | 3 +- .../simulator/simcode/vars/CodeBoolSet.java | 8 +- .../simulator/simcode/vars/CodeIntCreate.java | 1 + .../simulator/simcode/vars/CodeIntGet.java | 3 +- .../simulator/simcode/vars/CodeIntSet.java | 8 +- .../simulator/simcode/vars/CodeMillis.java | 1 + .../ardublock/simulator/view/GUI.java | 85 +++++++++++-------- .../simulator/view/modules/ArduinoUno.java | 73 ++++++++-------- .../simulator/view/modules/Button.java | 19 +++-- .../simulator/view/modules/Modul.java | 15 ++-- .../simulator/view/modules/Poti.java | 63 +++++++------- .../ardublock/simulator/view/modules/RGB.java | 11 +-- 64 files changed, 264 insertions(+), 179 deletions(-) diff --git a/src/tec/letsgoing/ardublock/simulator/Simulator.java b/src/tec/letsgoing/ardublock/simulator/Simulator.java index 6d6cfd4..29f3a5f 100644 --- a/src/tec/letsgoing/ardublock/simulator/Simulator.java +++ b/src/tec/letsgoing/ardublock/simulator/Simulator.java @@ -27,14 +27,13 @@ import tec.letsgoing.ardublock.simulator.simcode.vars.CodeMillis; import tec.letsgoing.ardublock.simulator.view.GUI; /** - * Diese Klasse verwaltet alle Elemente des Simulators. Sie ist geschrieben als Singelton. - * Daher wird die Instanz über getInstance geholt und der Konstruktor ist private. + * Diese Klasse verwaltet alle Elemente des Simulators. Sie ist geschrieben als + * Singelton. Daher wird die Instanz über getInstance geholt und der Konstruktor + * ist private. * * - * Pinmapping: - * RGB: 9,10,11 - * Poti: A5 - * Button: 3,4,5 + * Pinmapping: RGB: 9,10,11 Poti: A5 Button: 3,4,5 + * * @author Lucas * * @@ -48,7 +47,7 @@ public class Simulator implements Runnable, ActionListener { private Thread simuThread; private Vector<SimCodeFunction> functionsCode = new Vector<SimCodeFunction>(); - + private Simulator() { createSubClasses(); } @@ -121,7 +120,7 @@ public class Simulator implements Runnable, ActionListener { arduino.errorAbort("Thread Überwachung gestört - Bitte Programm neustarten"); } } - Point locationWindow=gui.getLocation(); + Point locationWindow = gui.getLocation(); gui.stopThread(); gui.dispose(); @@ -204,20 +203,20 @@ public class Simulator implements Runnable, ActionListener { SimTypeString s2 = new SimTypeString(d1); CodeAdd s5 = new CodeAdd(d1, d5); - //testLoop.add(new CodeDigitalWrite(d2, b0)); - //testLoop.add(new CodeDelay(delay)); - //testLoop.add(new CodeDigitalWrite(d2, b1)); - //testLoop.add(new CodeDelay(delay)); + // testLoop.add(new CodeDigitalWrite(d2, b0)); + // testLoop.add(new CodeDelay(delay)); + // testLoop.add(new CodeDigitalWrite(d2, b1)); + // testLoop.add(new CodeDelay(delay)); Vector<SimCode> forVec = new Vector<SimCode>(); forVec.add(new CodeDigitalWrite(d3, b1)); forVec.add(new CodeDelay(delay)); forVec.add(new CodeDigitalWrite(d3, b0)); forVec.add(new CodeDelay(delay)); - //testLoop.add(new CodeFor(d1, forVec)); - //testLoop.add(new CodeSerialPrint(new SimTypeString(new CodeMillis()), b1)); - testLoop.add(new CodeSerialPrint(new SimTypeString(new CodeAnalogRead(d5)),b1)); - testLoop.add(new CodeAnalogWrite(d9,new SimTypeInt(new CodeAnalogRead(d5)))); + // testLoop.add(new CodeFor(d1, forVec)); + // testLoop.add(new CodeSerialPrint(new SimTypeString(new CodeMillis()), b1)); + testLoop.add(new CodeSerialPrint(new SimTypeString(new CodeAnalogRead(d5)), b1)); + testLoop.add(new CodeAnalogWrite(d9, new SimTypeInt(new CodeAnalogRead(d5)))); testLoop.add(new CodeDelay(delay)); SimCodeFunction setupCode = new SimCodeFunction("setup", testSetup); diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java index e9939a2..23d4564 100644 --- a/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java +++ b/src/tec/letsgoing/ardublock/simulator/arduino/Arduino.java @@ -11,7 +11,9 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; import tec.letsgoing.ardublock.simulator.view.GUI; /** - * Diese Klasse hält die Daten eines "virtuellen" Arduinos und verwaltet die Hardware + * Diese Klasse hält die Daten eines "virtuellen" Arduinos und verwaltet die + * Hardware + * * @author Lucas * * @@ -40,7 +42,7 @@ public class Arduino { public boolean setVariable(String _name, SimCode _value) { for (Variable var : vars) { - if (var.getName() == _name) { + if (var.getName().equals(_name)) { var.setValue(_value); return true; } @@ -52,7 +54,7 @@ public class Arduino { public SimCode readVariable(String _name) { for (Variable var : vars) { - if (var.getName() == _name) { + if (var.getName().equals(_name)) { return var.getValue(); } @@ -115,14 +117,14 @@ public class Arduino { } return true; } - + public void resetFunctions() { functions.clear(); } public void serialPrint(String content) { if (!stopFlag) { - gui.serialPrint(content); + gui.serialPrint(content); } } @@ -157,7 +159,7 @@ public class Arduino { } public void errorAbort(String error) { - this.serialPrint("Fehler im Programm: " + error + " - Programm wird beendet"); + this.serialPrint("Fehler im Programm: " + error + " - Programm wird beendet\n"); this.setStop(true); this.getPin(20).setValue(0); } diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java b/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java index c24d32a..c27174e 100644 --- a/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java +++ b/src/tec/letsgoing/ardublock/simulator/arduino/Pin.java @@ -8,13 +8,14 @@ import java.util.Observer; /** * Diese Klasse ist für einen Pin auf dem Arduino + * * @author Lucas * * * */ public class Pin extends Observable { - //FIXME Java 8 oder 11? + // FIXME Java 8 oder 11? private int value = 0; private boolean mode = false; // false == Input, true==Output diff --git a/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java b/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java index 22fdba8..ed7de17 100644 --- a/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java +++ b/src/tec/letsgoing/ardublock/simulator/arduino/Variable.java @@ -6,7 +6,9 @@ package tec.letsgoing.ardublock.simulator.arduino; import tec.letsgoing.ardublock.simulator.simcode.SimCode; /** - * Diese Klasse speichert eine Variable und stellt diese über Operationen zur Verfügung + * Diese Klasse speichert eine Variable und stellt diese über Operationen zur + * Verfügung + * * @author Lucas * * diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java index f607486..556a2c1 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/SimCode.java @@ -8,8 +8,9 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * - * Jedes Codeelement erbt von dieser dieser Klasse. - * Durch die run()-Methode kann jedes Code-Objekt ausgeführt werden. + * Jedes Codeelement erbt von dieser dieser Klasse. Durch die run()-Methode kann + * jedes Code-Objekt ausgeführt werden. + * * @author Lucas * * diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java index 32c821d..0c0ba28 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeConnectString.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Verbinde einen beliebigen Block mit einer Zeichenkette + * * @author Lucas * * @@ -27,7 +28,7 @@ public class CodeConnectString extends SimCode { @Override public SimTypeString run(Arduino _arduino, SimCodeFunction functionHead) { - out = "" + block1.run(_arduino, functionHead) + block2.run(_arduino, functionHead); + out = "" + block1.run(_arduino, functionHead).toString() + block2.run(_arduino, functionHead).toString(); return new SimTypeString(out); } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java index 2e43fff..df1cc91 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/comm/CodeSerialPrint.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Sende Nachricht via Serial + * * @author Lucas * * diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java index f62e7d7..c9956a4 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeDelay.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Warte Millisekunden. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java index f506535..5fa4212 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElse.java @@ -11,7 +11,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeIf; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** - * Führe Befehle aus, falls "falls"-Block FALSCH (und evtl. "sonst falls"-Block) sind. + * Führe Befehle aus, falls "falls"-Block FALSCH (und evtl. "sonst falls"-Block) + * sind. + * * @author Lucas * */ @@ -37,5 +39,4 @@ public class CodeElse extends SimTypeIf { return null; } - } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java index e342fc2..dd6fef6 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeElseIf.java @@ -13,6 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Führe die Befehle aus wenn falls-Block FALSCH ist und Bedingung WAHR ist. + * * @author Lucas * */ @@ -21,7 +22,7 @@ public class CodeElseIf extends SimTypeIf { private SimTypeBool condition; private Vector<SimCode> codeBlocks; - public CodeElseIf(SimTypeIf _follow,SimTypeBool _condition, Vector<SimCode> _vec) { + public CodeElseIf(SimTypeIf _follow, SimTypeBool _condition, Vector<SimCode> _vec) { follow = _follow; condition = _condition; codeBlocks = _vec; @@ -42,7 +43,6 @@ public class CodeElseIf extends SimTypeIf { } } - @Override public String toString() { return null; diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java index 6b3ffdc..3ed8ae1 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeFor.java @@ -13,6 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * * Wiederhole die Befehle x-mal. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java index 2c5588f..86854d3 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeForCount.java @@ -12,7 +12,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** - * Wiederhole die Befehle x-mal. Die Wiederholungen werden in der Variable gespeichert. + * Wiederhole die Befehle x-mal. Die Wiederholungen werden in der Variable + * gespeichert. + * * @author Lucas * */ @@ -29,6 +31,7 @@ public class CodeForCount extends SimCode { @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { + // TODO delete Var after completion 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)); diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java index 1013aca..0f8df71 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeIf.java @@ -13,6 +13,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Führe Befehle aus, wenn die Bedingung WAHR ist. + * * @author Lucas * * @@ -22,7 +23,7 @@ public class CodeIf extends SimTypeIf { private SimTypeBool condition; private Vector<SimCode> codeBlocks; - public CodeIf(SimTypeIf _follow,SimTypeBool _condition, Vector<SimCode> _vec) { + public CodeIf(SimTypeIf _follow, SimTypeBool _condition, Vector<SimCode> _vec) { condition = _condition; codeBlocks = _vec; follow = _follow; @@ -38,13 +39,14 @@ public class CodeIf extends SimTypeIf { } return null;// True Case } else { - follow.run(_arduino, functionHead); + if (follow != null) { + follow.run(_arduino, functionHead); + } return null; // False Case } } - public String toString() { return null; } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java index db69ab1..a08883e 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhile.java @@ -12,6 +12,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Führe Befehle aus, solange die Bedingung WAHR ist. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java index 4347dba..06e82d9 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/control/CodeWhileMillis.java @@ -12,7 +12,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeString; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** - * Befehle ausserhalb von mache werden nur alle x-Millisekunden ausgeführt\nDie Startzeit jedes Durchgangs wird in der Variable gespeichert + * Befehle ausserhalb von mache werden nur alle x-Millisekunden ausgeführt\nDie + * Startzeit jedes Durchgangs wird in der Variable gespeichert + * * @author Lucas * */ @@ -29,10 +31,12 @@ public class CodeWhileMillis extends SimCode { @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { + // TODO Docu: Vergleich der Zeiten bis zum Überlauf zwischen C und Java functionHead.createVariable(varname.toString(), new SimTypeInt(_arduino.getMillis())); int startTime = _arduino.getMillis(); int dura = duration.run(_arduino, functionHead).getValue(); - while (startTime + dura < _arduino.getMillis()) { + while (startTime + dura > _arduino.getMillis()) { + for (SimCode block : blocks) { block.run(_arduino, functionHead); } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java index 060a6a4..ea4d295 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeBool.java @@ -9,6 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Klasse für einen BooldatenTyp + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java index 21612c2..3ab3d48 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeIf.java @@ -9,6 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Unterklasse für die If-Codeblöcke + * * @author Lucas * * @@ -21,6 +22,5 @@ public abstract class SimTypeIf extends SimCode { @Override public abstract String toString(); - } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java index a30a6ab..1c91f63 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeInt.java @@ -9,8 +9,9 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Klasse für einen Int-Datentyp + * * @author Lucas - * + * */ public class SimTypeInt extends SimCode { private int value = 0; diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java index d9e94a1..39fac7a 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/datatypes/SimTypeString.java @@ -9,6 +9,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Klasse für einen Zeichenketten Datentyp + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java index 0cca8f7..a0f876f 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/CodeExecuteFunction.java @@ -8,6 +8,7 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode; /** * Führt das Unterprogramm mit dem Namen aus. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java index dbca6fa..986b5cd 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/functions/SimCodeFunction.java @@ -11,10 +11,15 @@ import tec.letsgoing.ardublock.simulator.simcode.SimCode; /** * Erstellt ein Unterprogramm. - * @author Lucas * + * @author Lucas + * */ public class SimCodeFunction extends SimCode { + // FIXME Jede Variable ist "lokal" = dem nächst höheren Funktionsaufruf + // zugeordnet, während Ardublock global ist. + // FIXME Auch machen IF und While keine neuen Stacks auf sondern schieben Ihre + // Variabeln auch in den "Loop" Block private String name; private Vector<SimCode> codeBlocks = new Vector<SimCode>(); private Vector<Variable> vars = new Vector<Variable>(); @@ -29,9 +34,8 @@ public class SimCodeFunction extends SimCode { public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { if (functionHead == null) { isMain = true; - this.arduino = _arduino; } - + this.arduino = _arduino; vars = new Vector<Variable>(); for (SimCode code : codeBlocks) { code.run(_arduino, this); @@ -54,7 +58,7 @@ public class SimCodeFunction extends SimCode { public boolean setVariable(String _name, SimCode _value) { for (Variable var : vars) { - if (var.getName() == _name) { + if (var.getName().equals(_name)) { var.setValue(_value); return true; } @@ -68,7 +72,7 @@ public class SimCodeFunction extends SimCode { public SimCode readVariable(String _name) { for (Variable var : vars) { - if (var.getName() == _name) { + if (var.getName().equals(_name)) { return var.getValue(); } } @@ -78,7 +82,6 @@ public class SimCodeFunction extends SimCode { @Override public String toString() { - // TODO Auto-generated method stub return null; } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java index 1ccd918..27ba239 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogRead.java @@ -10,7 +10,8 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Liest den analogen Wert vom Pin [0V=0;5V=1023] - * @author Lucas + * + * @author Lucas * */ public class CodeAnalogRead extends SimCode { diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java index f7cf701..974f531 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeAnalogWrite.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * PWM-Ausgang Wert[0-255] zuweisen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java index bbe6a23..9d291e0 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalRead.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Liest den digitalen Wert des Pins ein [HIGH/LOW] + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java index e1aa849..989930c 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/io/CodeDigitalWrite.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Ausgang eines digitalen Ausgangs festlegen (HIGH/LOW) + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java index 6a1bff7..9af25c8 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeAND.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn beide Bedingungen erfüllt sind. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java index 1e8c8d4..a315e41 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolEqual.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn die beiden Bool-Werte identisch sind. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java index 6760fc5..1334835 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeBoolUnequal.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn die beiden Bool-Werte ungleich sind + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java index f9153e2..76df1b6 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBigger.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn der Erste Wert größer als der Zweite ist + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java index 29a45f1..fcaf93e 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntBiggerEqual.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn der Erste Wert größer oder gleich wie der Zweite ist + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java index 4ff5332..fde07fd 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntEqual.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn beide Int Werte gleich sind. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java index 548a91f..3ed7851 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmaller.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn der Erste Wert kleiner als der Zweite ist + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java index 8ace12a..8025864 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntSmallerEqual.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn der erste Wert kleiner oder gleich dem Zweiten ist. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java index e7e46d0..c9ce10c 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeIntUnequal.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn die beiden Int-Werte ungleich sind. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java index da4156a..595f94c 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeNOT.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn der Wert FALSCH ist. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java index 80da717..68d8568 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeOR.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn einer der beiden Werte WAHR ist + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java index 3099e1c..19abe19 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringEqual.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn beide Zeichenketten den identischen Inhalt besitzen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java index 971be78..877dc95 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/logic/CodeStringUnequal.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * WAHR wenn beide Zeichenketten nicht identisch sind. + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java index b5885d0..3ebb920 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAbs.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Der Betrag einer Zahl + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java index 51a529b..42eb37c 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeAdd.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Die Addition zweier Zahlen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java index 9464ef4..6d09733 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeDivison.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Die Division zweier Zahlen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java index 73ba9e2..9ab9220 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeLimit.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Limitiere einen analogen Wert + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java index 7318ace..4753285 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Ordne einen Wert aus dem Bereich "von" auf den Bereich "zu" + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java index df281ea..be723a4 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMap10to8.java @@ -9,7 +9,9 @@ import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** - * Ordne Werte aus dem Bereich [0,1023] auf den Bereich von [0,255] zu. (10 Bit zu 8 Bit) + * Ordne Werte aus dem Bereich [0,1023] auf den Bereich von [0,255] zu. (10 Bit + * zu 8 Bit) + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java index 1520ce0..66e257d 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMax.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Die Größere Zahl der beiden Eingaben + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java index cf71942..5a62b0b 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMin.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Die kleinere Zahl der beiden Eingaben + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java index 45c7f08..3e75427 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeMinus.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Die Differenz der beiden Zahlen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java index 0a303a7..458f6ae 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeModulo.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Die Modulooperation von zwei Zahlen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java index 9bec675..b364513 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeProduct.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Das Produkt aus 2 Zahlen + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java index 8c342b9..592ca70 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMax.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Erzeuge eine Zufallszahl zwischen 0 und max-1 + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java index 8521609..9603fae 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/math/CodeRandMinMax.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Erzeuge eine Zufallszahl zwische min und max + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java index 395399f..be35918 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolCreate.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Erzeuge eine boolsche Variable + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java index 95f0cec..82918ba 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolGet.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Lese eine boolsche Varibale + * * @author Lucas * */ @@ -23,7 +24,7 @@ public class CodeBoolGet extends SimCode { @Override public SimTypeBool run(Arduino _arduino, SimCodeFunction functionHead) { - return new SimTypeBool(functionHead.readVariable(var.run(_arduino, functionHead).toString())); + return (SimTypeBool) functionHead.readVariable(var.run(_arduino, functionHead).toString()); } @Override diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java index 164e3af..af5adf0 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeBoolSet.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Setze eine boolsche Variable + * * @author Lucas * */ @@ -25,8 +26,11 @@ public class CodeBoolSet extends SimCode { @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { - functionHead.setVariable(var.run(_arduino, functionHead).toString(), - new SimTypeBool(value.run(_arduino, functionHead).getValue())); + // Wenn die Variable nicht vorhanden ist, so erzeuge Sie. + if (!functionHead.setVariable(var.run(_arduino, functionHead).toString(), + new SimTypeBool(value.run(_arduino, functionHead).getValue()))) { + functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead)); + } return null; } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java index 33a9a54..d916ec7 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntCreate.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Erzeuge eine analoge/Integer Variable + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java index 3e8755e..5357904 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntGet.java @@ -11,6 +11,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Lese eine analoge/Integer Variable + * * @author Lucas * */ @@ -23,7 +24,7 @@ public class CodeIntGet extends SimCode { @Override public SimTypeInt run(Arduino _arduino, SimCodeFunction functionHead) { - return new SimTypeInt(functionHead.readVariable(var.run(_arduino, functionHead).toString())); + return (SimTypeInt) functionHead.readVariable(var.run(_arduino, functionHead).toString()); } @Override diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java index 49dca07..a6e01e8 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeIntSet.java @@ -5,12 +5,14 @@ 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; /** * Setze eine analoge/Integer Variable + * * @author Lucas * */ @@ -25,8 +27,10 @@ public class CodeIntSet extends SimCode { @Override public SimCode run(Arduino _arduino, SimCodeFunction functionHead) { - functionHead.setVariable(var.run(_arduino, functionHead).toString(), - new SimTypeInt(value.run(_arduino, functionHead).getValue())); + if (!functionHead.setVariable(var.run(_arduino, functionHead).toString(), + new SimTypeInt(value.run(_arduino, functionHead).getValue()))) { + functionHead.createVariable(var.run(_arduino, functionHead).toString(), value.run(_arduino, functionHead)); + } return null; } diff --git a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java index f23e410..e59f633 100644 --- a/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java +++ b/src/tec/letsgoing/ardublock/simulator/simcode/vars/CodeMillis.java @@ -10,6 +10,7 @@ import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; /** * Gibt die Zeit seit Programmstart in Millisekunden an + * * @author Lucas * */ diff --git a/src/tec/letsgoing/ardublock/simulator/view/GUI.java b/src/tec/letsgoing/ardublock/simulator/view/GUI.java index e282cab..bc868c3 100644 --- a/src/tec/letsgoing/ardublock/simulator/view/GUI.java +++ b/src/tec/letsgoing/ardublock/simulator/view/GUI.java @@ -39,6 +39,7 @@ import tec.letsgoing.ardublock.simulator.view.modules.RGB; /** * Verwaltet die graphische Oberfläche. + * * @author Lucas * */ @@ -52,29 +53,33 @@ public class GUI extends JFrame implements Runnable, ActionListener { public GUI(Simulator simu) { super("ArdubBlock Simulator"); modules[0] = new RGB(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM31_RGB_LED.png")))); - modules[1] = new Button(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM26_Taster.png"))),new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_Off.png"))),new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_On.png")))); - modules[2] = new Poti(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM24_Potentiometer.png")))); - modules[3] = new ArduinoUno(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/ArduinoUno.png"))),simu); - + modules[1] = new Button(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM26_Taster.png"))), + new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_Off.png"))), + new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Taster_On.png")))); + modules[2] = new Poti( + new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/PM24_Potentiometer.png")))); + modules[3] = new ArduinoUno(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/ArduinoUno.png"))), + simu); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); Container mainPane = this.getContentPane(); JPanel modulPanel = new JPanel(new BorderLayout()) { - @Override + @Override public void paint(Graphics g) { - + super.paint(g); - - for (int i =-1 ; i<2;i++) { + + for (int i = -1; i < 2; i++) { g.setColor(Color.BLACK); - g.fillRect(i*294+261, 183, 60, 5); + g.fillRect(i * 294 + 261, 183, 60, 5); g.setColor(Color.RED); - g.fillRect(i*294+261, 211, 60, 5); - + g.fillRect(i * 294 + 261, 211, 60, 5); + } drawConnections(g); - + } }; modulPanel.add(modules[0].getPane(), BorderLayout.WEST); @@ -86,8 +91,8 @@ public class GUI extends JFrame implements Runnable, ActionListener { mainPane.add(createControlPanel(simu), BorderLayout.LINE_END); mainPane.add(createSerialLog(), BorderLayout.PAGE_END); this.pack(); - - //this.setLocation(-1300, 0); //FIXME Code to Run the Window on second screen + + // this.setLocation(-1300, 0); //FIXME Code to Run the Window on second screen this.setVisible(true); } @@ -101,13 +106,11 @@ public class GUI extends JFrame implements Runnable, ActionListener { JButton reloadButton = new JButton(); JButton measButton = new JButton(); - goButton.setIcon(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Play.png")))); stopButton.setIcon(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Stop.png")))); reloadButton.setIcon(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Reload.png")))); measButton.setIcon(new ImageIcon(getToolkit().getImage(GUI.class.getResource("/img/Measure.png")))); - goButton.addActionListener(simu); stopButton.addActionListener(simu); reloadButton.addActionListener(simu); @@ -151,28 +154,40 @@ public class GUI extends JFrame implements Runnable, ActionListener { panel.add(scrollPane, BorderLayout.PAGE_END); return panel; } - + private void drawConnections(Graphics g) { - int[] assignment= {11,10,9,5,4,3,19}; + int[] assignment = { 11, 10, 9, 5, 4, 3, 19 }; g.setColor(Color.ORANGE); - Vector<Point> pinArduino=modules[3].getPinPos(); - Point posArduino=modules[3].getPosition(); - int counter=0; - Stroke roundLine=new BasicStroke(5,BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); - for (int i=0;i<3;i++) { - Vector<Point> pos =modules[i].getPinPos(); - for (Point p:pos) { + Vector<Point> pinArduino = modules[3].getPinPos(); + Point posArduino = modules[3].getPosition(); + int counter = 0; + Stroke roundLine = new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); + for (int i = 0; i < 3; i++) { + Vector<Point> pos = modules[i].getPinPos(); + for (Point p : pos) { Graphics2D g2 = (Graphics2D) g; - g2.setStroke(roundLine); - if (counter>5) { - g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y, p.x+modules[i].getPosition().x, pinArduino.get(assignment[counter]).y+posArduino.y); - g2.drawLine(p.x+modules[i].getPosition().x, pinArduino.get(assignment[counter]).y+posArduino.y, pinArduino.get(assignment[counter]).x+posArduino.x, pinArduino.get(assignment[counter]).y+posArduino.y); - } else { - g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y, p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y+90-(counter)*10); - g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y+90-(counter)*10, pinArduino.get(assignment[counter]).x+posArduino.x, p.y+modules[i].getPosition().y+90-(counter)*10); - g2.drawLine(pinArduino.get(assignment[counter]).x+posArduino.x, p.y+modules[i].getPosition().y+90-(counter)*10, pinArduino.get(assignment[counter]).x+posArduino.x, pinArduino.get(assignment[counter]).y+posArduino.y); - //g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y, pinArduino.get(assignment[counter]).x+posArduino.x, pinArduino.get(assignment[counter]).y+posArduino.y); - } + g2.setStroke(roundLine); + if (counter > 5) { + g2.drawLine(p.x + modules[i].getPosition().x, p.y + modules[i].getPosition().y, + p.x + modules[i].getPosition().x, pinArduino.get(assignment[counter]).y + posArduino.y); + g2.drawLine(p.x + modules[i].getPosition().x, pinArduino.get(assignment[counter]).y + posArduino.y, + pinArduino.get(assignment[counter]).x + posArduino.x, + pinArduino.get(assignment[counter]).y + posArduino.y); + } else { + g2.drawLine(p.x + modules[i].getPosition().x, p.y + modules[i].getPosition().y, + p.x + modules[i].getPosition().x, p.y + modules[i].getPosition().y + 90 - (counter) * 10); + g2.drawLine(p.x + modules[i].getPosition().x, + p.y + modules[i].getPosition().y + 90 - (counter) * 10, + pinArduino.get(assignment[counter]).x + posArduino.x, + p.y + modules[i].getPosition().y + 90 - (counter) * 10); + g2.drawLine(pinArduino.get(assignment[counter]).x + posArduino.x, + p.y + modules[i].getPosition().y + 90 - (counter) * 10, + pinArduino.get(assignment[counter]).x + posArduino.x, + pinArduino.get(assignment[counter]).y + posArduino.y); + // g2.drawLine(p.x+modules[i].getPosition().x, p.y+modules[i].getPosition().y, + // pinArduino.get(assignment[counter]).x+posArduino.x, + // pinArduino.get(assignment[counter]).y+posArduino.y); + } counter++; } } diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java index 08fc2be..133c335 100644 --- a/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java +++ b/src/tec/letsgoing/ardublock/simulator/view/modules/ArduinoUno.java @@ -25,6 +25,7 @@ import tec.letsgoing.ardublock.simulator.view.GUI; /** * Modul für einen Arduino Uno + * * @author Lucas * */ @@ -33,10 +34,10 @@ public class ArduinoUno extends Modul { private boolean ledOn; private int led13 = 0; - public ArduinoUno(ImageIcon _icon,Simulator simu) { - int locx=50; - int locy=50; - layerpane.setPreferredSize(new Dimension(587+locx, 418+locy));//587,418 + public ArduinoUno(ImageIcon _icon, Simulator simu) { + int locx = 50; + int locy = 50; + layerpane.setPreferredSize(new Dimension(587 + locx, 418 + locy));// 587,418 JLabel chiplabel = new JLabel(); ImageIcon chipIcon = _icon; chipIcon = new ImageIcon(chipIcon.getImage().getScaledInstance(587, 418, Image.SCALE_SMOOTH)); @@ -58,7 +59,7 @@ public class ArduinoUno extends Modul { }; - labelPower.setLocation(504+locx, 126+locy); + labelPower.setLocation(504 + locx, 126 + locy); labelPower.setSize(20, 20); layerpane.add(labelPower, 0); @@ -72,10 +73,10 @@ public class ArduinoUno extends Modul { }; - label13.setLocation(257+locx, 89+locy); + label13.setLocation(257 + locx, 89 + locy); label13.setSize(20, 20); layerpane.add(label13, 0); - + JButton button = new JButton(); button.setSize(70, 70); button.setActionCommand("reset"); @@ -83,14 +84,14 @@ public class ArduinoUno extends Modul { button.setOpaque(false); button.setContentAreaFilled(false); button.setBorderPainted(false); - + JLabel labelButton = new JLabel(); labelButton.add(button); labelButton.setSize(60, 51); - labelButton.setLocation(64+locx, 1+locy); - layerpane.add(labelButton,0); - - calculatePinPos(locx,locy); + labelButton.setLocation(64 + locx, 1 + locy); + layerpane.add(labelButton, 0); + + calculatePinPos(locx, locy); } @@ -113,35 +114,31 @@ public class ArduinoUno extends Modul { tmpPin.setObserver(this); return true; } - - private void calculatePinPos(int locx,int locy) { - Vector<Point> pins=new Vector<Point>(); - int offset=0; - for (int i=15;i>1;i--) { - if (i<8)offset=-11; - pins.add(new Point(i*20+locx+246+offset,locy+19)); + + private void calculatePinPos(int locx, int locy) { + Vector<Point> pins = new Vector<Point>(); + int offset = 0; + for (int i = 15; i > 1; i--) { + if (i < 8) + offset = -11; + pins.add(new Point(i * 20 + locx + 246 + offset, locy + 19)); } - for (int i=0;i<6;i++) { - pins.add(new Point(i*20+locx+447,locy+397)); + for (int i = 0; i < 6; i++) { + pins.add(new Point(i * 20 + locx + 447, locy + 397)); } - //Code to check the Pin Pos - /*JLabel label; - for (Point pin:pins) { - label= new JLabel() { - @Override - public void paintComponent(Graphics g) { - g.setColor(Color.RED); - g.fillRect(0, 0, 10, 10); - } - - }; - - label.setLocation(pin.x,pin.y); - label.setSize(10, 10); - layerpane.add(label, 0); - }*/ + // Code to check the Pin Pos + /* + * JLabel label; for (Point pin:pins) { label= new JLabel() { + * + * @Override public void paintComponent(Graphics g) { g.setColor(Color.RED); + * g.fillRect(0, 0, 10, 10); } + * + * }; + * + * label.setLocation(pin.x,pin.y); label.setSize(10, 10); layerpane.add(label, + * 0); } + */ this.setPinPos(pins); } - } diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java index 4254988..0c7c9c0 100644 --- a/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java +++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Button.java @@ -20,19 +20,20 @@ import tec.letsgoing.ardublock.simulator.arduino.Pin; /** * Modul mit 3 Toogle Buttons + * * @author Lucas * */ public class Button extends Modul implements ActionListener { private int[] lastState = { 0, 0, 0 }; - private ImageIcon iconOff,iconOn; + private ImageIcon iconOff, iconOn; public Button(ImageIcon _icon, ImageIcon _icon1, ImageIcon _icon2) { - iconOff=_icon1; - iconOn=_icon2; + iconOff = _icon1; + iconOn = _icon2; layerpane.setPreferredSize(new Dimension(294, 294)); JLabel chiplabel = new JLabel(); - ImageIcon chipIcon =_icon; + ImageIcon chipIcon = _icon; chiplabel.setIcon(chipIcon); chiplabel.setSize(294, 294); layerpane.add(chiplabel, 0); @@ -108,18 +109,18 @@ public class Button extends Modul implements ActionListener { } else { ((JToggleButton) arg0.getSource()).setIcon(iconOff); } - + int value = 0; if (bool) value = 1023; lastState[pin] = value; pins.get(pin).setValue(value); } - + private void calculatePinPos() { - Vector<Point> pins=new Vector<Point>(); - for (int i=0;i<3;i++) { - pins.add(new Point(i*30+117,235)); + Vector<Point> pins = new Vector<Point>(); + for (int i = 0; i < 3; i++) { + pins.add(new Point(i * 30 + 117, 235)); } this.setPinPos(pins); } diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java index 3522dc4..5241939 100644 --- a/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java +++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Modul.java @@ -16,15 +16,16 @@ import tec.letsgoing.ardublock.simulator.arduino.Pin; /** * Oberklasse für alle Module + * * @author Lucas * */ -public abstract class Modul implements Observer { +public abstract class Modul implements Observer { private boolean active = true; private Point position; protected Vector<Pin> pins = new Vector<Pin>(); protected JLayeredPane layerpane = new JLayeredPane(); - protected Vector<Point> pinPos=new Vector<Point>(); + protected Vector<Point> pinPos = new Vector<Point>(); public void setState(boolean State) { active = State; @@ -39,7 +40,7 @@ public abstract class Modul implements Observer { } public Point getPosition() { - //return position; + // return position; return layerpane.getLocation(); } @@ -50,7 +51,7 @@ public abstract class Modul implements Observer { updateModul((Pin) Observable); } } - + } public abstract void updateModul(Pin pin); @@ -58,13 +59,13 @@ public abstract class Modul implements Observer { public void addPin(Pin _pin) { pins.add(_pin); } - + public Vector<Point> getPinPos() { return pinPos; } - + public void setPinPos(Vector<Point> _pins) { - pinPos=_pins; + pinPos = _pins; } public JLayeredPane getPane() { diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java index 7c90764..835651e 100644 --- a/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java +++ b/src/tec/letsgoing/ardublock/simulator/view/modules/Poti.java @@ -24,10 +24,11 @@ import tec.letsgoing.ardublock.simulator.arduino.Pin; /** * Modul mit einem Potentiometer + * * @author Lucas * */ -public class Poti extends Modul implements ChangeListener, MouseWheelListener { +public class Poti extends Modul implements ChangeListener, MouseWheelListener { int value = 0; JSlider slider; @@ -37,74 +38,72 @@ public class Poti extends Modul implements ChangeListener, MouseWheelListener { ImageIcon chipIcon = _icon; chiplabel.setIcon(chipIcon); chiplabel.setSize(294, 294); - slider=new JSlider(JSlider.HORIZONTAL,0,1024,512); - + slider = new JSlider(JSlider.HORIZONTAL, 0, 1024, 512); + slider.setMajorTickSpacing(256); slider.setMinorTickSpacing(64); slider.setPaintTicks(true); - - //Create the label table - Hashtable<Integer,JLabel> labelTable = new Hashtable<Integer,JLabel>(); - labelTable.put( new Integer( 10 ), new JLabel("0 V") ); - labelTable.put( new Integer( 512 ), new JLabel("2.5 V") ); - labelTable.put( new Integer( 1023 ), new JLabel("5 V") ); - slider.setLabelTable( labelTable ); + + // Create the label table + Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>(); + labelTable.put(new Integer(10), new JLabel("0 V")); + labelTable.put(new Integer(512), new JLabel("2.5 V")); + labelTable.put(new Integer(1023), new JLabel("5 V")); + slider.setLabelTable(labelTable); slider.setPaintLabels(true); - slider.setPreferredSize(new Dimension(180,50)); + slider.setPreferredSize(new Dimension(180, 50)); slider.setOpaque(false); slider.addChangeListener(this); slider.addMouseWheelListener(this); - - JPanel sliderPanel=new JPanel(); + + JPanel sliderPanel = new JPanel(); sliderPanel.add(slider); sliderPanel.setSize(200, 50); - sliderPanel.setLocation(47,170); + sliderPanel.setLocation(47, 170); sliderPanel.setOpaque(false); layerpane.add(chiplabel, 0); - layerpane.add(sliderPanel,0); - + layerpane.add(sliderPanel, 0); + calculatePinPos(); - - - + } public void updateModul(Pin arg0) { - if (pins.get(0).getValue()!=slider.getValue()) { + if (pins.get(0).getValue() != slider.getValue()) { pins.get(0).setValue(slider.getValue()); } } public boolean connect(Arduino arduino) { - this.addPin(arduino.getPin(5+13)); - arduino.getPin(5+13).setObserver(this); + this.addPin(arduino.getPin(5 + 13)); + arduino.getPin(5 + 13).setObserver(this); return true; } @Override public void stateChanged(ChangeEvent arg0) { - if (slider.getValue()==1024) slider.setValue(1023); //Kleiner Trick damit die 1024 angezeigt wird aber keinen Fehler verursacht + if (slider.getValue() == 1024) + slider.setValue(1023); // Kleiner Trick damit die 1024 angezeigt wird aber keinen Fehler verursacht pins.get(0).setValue(slider.getValue()); - + } @Override public void mouseWheelMoved(MouseWheelEvent arg0) { int notches = arg0.getWheelRotation(); if (notches > 0) { - slider.setValue(slider.getValue()+10); + slider.setValue(slider.getValue() + 10); } else { - slider.setValue(slider.getValue()-10); + slider.setValue(slider.getValue() - 10); } - - - + } + private void calculatePinPos() { - Vector<Point> pins=new Vector<Point>(); - pins.add(new Point(30+117,235)); + Vector<Point> pins = new Vector<Point>(); + pins.add(new Point(30 + 117, 235)); this.setPinPos(pins); } - + } diff --git a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java index b9cc6d5..2d00b9e 100644 --- a/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java +++ b/src/tec/letsgoing/ardublock/simulator/view/modules/RGB.java @@ -18,6 +18,7 @@ import tec.letsgoing.ardublock.simulator.arduino.Pin; /** * Modul mit einer RGB LED + * * @author Lucas * */ @@ -49,7 +50,7 @@ public class RGB extends Modul { ledlabel.setSize(200, 200); layerpane.add(ledlabel, 0); calculatePinPos(); - + } public void updateModul(Pin pin) { @@ -77,11 +78,11 @@ public class RGB extends Modul { return true; } - + private void calculatePinPos() { - Vector<Point> pins=new Vector<Point>(); - for (int i=0;i<3;i++) { - pins.add(new Point(i*30+117,235)); + Vector<Point> pins = new Vector<Point>(); + for (int i = 0; i < 3; i++) { + pins.add(new Point(i * 30 + 117, 235)); } this.setPinPos(pins); } -- GitLab