From 787a9438584ee9f94fa6a642933fc3d9b886ba02 Mon Sep 17 00:00:00 2001 From: Lucas Stratmann <lucas.stratmann@student.reutlingen-university.de> Date: Thu, 10 Sep 2020 16:48:14 +0200 Subject: [PATCH] Began work on connecting Sim&Ardublock. Possible Unstable --- .../translator/block/control/DelayBlock.java | 1 + .../translator/block/control/LoopBlock.java | 18 ++++++++++++++++++ .../block/numbers/ConstantDigitalBlock.java | 4 ++++ .../block/numbers/ConstantNumberBlock.java | 5 +++++ .../block/numbers/DigitalHighBlock.java | 6 ++++++ .../translator/block/numbers/NumberBlock.java | 7 +++++++ .../block/output/DigitalOutputBlock.java | 9 +++++++++ .../listener/SimulateCodeButtonListener.java | 11 ++++++++--- 8 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/ardublock/translator/block/control/DelayBlock.java b/src/main/java/com/ardublock/translator/block/control/DelayBlock.java index 7aebd88..e496e51 100644 --- a/src/main/java/com/ardublock/translator/block/control/DelayBlock.java +++ b/src/main/java/com/ardublock/translator/block/control/DelayBlock.java @@ -30,6 +30,7 @@ public class DelayBlock extends TranslatorBlock @Override public SimCode toSim() throws BlockException, SocketNullException { + System.out.println("New Delayblock"); CodeDelay delay = new CodeDelay((SimTypeInt)this.getRequiredTranslatorBlockAtSocket(0).toSim()); return delay; } diff --git a/src/main/java/com/ardublock/translator/block/control/LoopBlock.java b/src/main/java/com/ardublock/translator/block/control/LoopBlock.java index 768a062..40cf9ef 100644 --- a/src/main/java/com/ardublock/translator/block/control/LoopBlock.java +++ b/src/main/java/com/ardublock/translator/block/control/LoopBlock.java @@ -1,10 +1,16 @@ package com.ardublock.translator.block.control; +import java.util.Vector; + import com.ardublock.translator.Translator; import com.ardublock.translator.block.TranslatorBlock; +import com.ardublock.translator.block.exception.BlockException; import com.ardublock.translator.block.exception.SocketNullException; import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; + public class LoopBlock extends TranslatorBlock { @@ -30,5 +36,17 @@ public class LoopBlock extends TranslatorBlock return ret; } + public SimCode toSim() throws BlockException, SocketNullException { + Vector<SimCode> vec =new Vector<SimCode>(); + TranslatorBlock translatorBlock = getTranslatorBlockAtSocket(0); + while (translatorBlock != null) + { + vec.add(translatorBlock.toSim()); + translatorBlock = translatorBlock.nextTranslatorBlock(); + } + SimCodeFunction loop =new SimCodeFunction("loop",vec); + return loop; + } + //FIXME Hier ToSim Begin and Vector Handling } diff --git a/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java b/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java index de0502d..d0877c2 100644 --- a/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java +++ b/src/main/java/com/ardublock/translator/block/numbers/ConstantDigitalBlock.java @@ -3,6 +3,9 @@ package com.ardublock.translator.block.numbers; import com.ardublock.translator.Translator; import com.ardublock.translator.block.TranslatorBlock; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; + public class ConstantDigitalBlock extends TranslatorBlock { public ConstantDigitalBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) @@ -25,4 +28,5 @@ public class ConstantDigitalBlock extends TranslatorBlock } return codePrefix + newInternalName + codeSuffix; } + } diff --git a/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java b/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java index aa8e19e..9f8d697 100644 --- a/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java +++ b/src/main/java/com/ardublock/translator/block/numbers/ConstantNumberBlock.java @@ -3,6 +3,9 @@ package com.ardublock.translator.block.numbers; import com.ardublock.translator.Translator; import com.ardublock.translator.block.TranslatorBlock; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; + public class ConstantNumberBlock extends TranslatorBlock { public ConstantNumberBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) @@ -25,4 +28,6 @@ public class ConstantNumberBlock extends TranslatorBlock } return codePrefix + newInternalName + codeSuffix; } + + } diff --git a/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java b/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java index e19e9fb..282c44d 100644 --- a/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java +++ b/src/main/java/com/ardublock/translator/block/numbers/DigitalHighBlock.java @@ -3,6 +3,8 @@ package com.ardublock.translator.block.numbers; import com.ardublock.translator.Translator; import com.ardublock.translator.block.ConstBlock; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; + public class DigitalHighBlock extends ConstBlock { @@ -11,4 +13,8 @@ public class DigitalHighBlock extends ConstBlock super(blockId, translator, codePrefix, codeSuffix, label); this.setCode("HIGH"); } + + public SimCode toSim() { + return null;//FIXME @Lucas Continue Work here! + } } diff --git a/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java b/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java index 254620d..7a210c9 100644 --- a/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java +++ b/src/main/java/com/ardublock/translator/block/numbers/NumberBlock.java @@ -3,6 +3,9 @@ package com.ardublock.translator.block.numbers; import com.ardublock.translator.Translator; import com.ardublock.translator.block.TranslatorBlock; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; + public class NumberBlock extends TranslatorBlock { public NumberBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) @@ -15,5 +18,9 @@ public class NumberBlock extends TranslatorBlock { return codePrefix + label + codeSuffix; } + + public SimCode toSim() { + return new SimTypeInt(Integer.parseInt(label)); + } } diff --git a/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java b/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java index c1a2c95..e9bab2a 100644 --- a/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java +++ b/src/main/java/com/ardublock/translator/block/output/DigitalOutputBlock.java @@ -7,6 +7,10 @@ import com.ardublock.translator.block.exception.SubroutineNotDeclaredException; import com.ardublock.translator.block.numbers.NumberBlock; import com.ardublock.translator.block.numbers.VariableNumberBlock; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.datatypes.SimTypeInt; +import tec.letsgoing.ardublock.simulator.simcode.io.CodeDigitalWrite; + public class DigitalOutputBlock extends TranslatorBlock { public DigitalOutputBlock(Long blockId, Translator translator, String codePrefix, String codeSuffix, String label) @@ -36,5 +40,10 @@ public class DigitalOutputBlock extends TranslatorBlock return ret; } + + public SimCode toSim() { + //SimTypeInt(Integer.parseInt(label)); + return null;//new CodeDigitalWrite(); + } } diff --git a/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java b/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java index a39085c..20e46d5 100644 --- a/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java +++ b/src/main/java/com/ardublock/ui/listener/SimulateCodeButtonListener.java @@ -5,6 +5,7 @@ import java.awt.event.ActionListener; import java.util.HashSet; import java.util.ResourceBundle; import java.util.Set; +import java.util.Vector; import javax.swing.JFrame; import javax.swing.JOptionPane; @@ -23,6 +24,8 @@ import edu.mit.blocks.renderable.RenderableBlock; import edu.mit.blocks.workspace.Workspace; import tec.letsgoing.ardublock.simulator.Simulator; +import tec.letsgoing.ardublock.simulator.simcode.SimCode; +import tec.letsgoing.ardublock.simulator.simcode.functions.SimCodeFunction; public class SimulateCodeButtonListener implements ActionListener { @@ -48,7 +51,7 @@ public class SimulateCodeButtonListener implements ActionListener Translator translator = new Translator(workspace); translator.reset(); - //Simulator sim = new Simulator(); //FIXME Hier beginn der Simulator instanz + Simulator sim = Simulator.getInstance(); //FIXME Hier beginn der Simulator instanz //AutoSave on Upload letsgoING openBlocksFrame.doSaveArduBlockFile(); @@ -194,7 +197,8 @@ public class SimulateCodeButtonListener implements ActionListener JOptionPane.showMessageDialog(parentFrame, uiMessageBundle.getString("ardublock.translator.exception.multipleLoopFound"), "Error", JOptionPane.ERROR_MESSAGE); return ; } - + + SimCodeFunction loop=new SimCodeFunction("loop",null); try { for (RenderableBlock renderableBlock : commentBlockSet) @@ -210,6 +214,7 @@ public class SimulateCodeButtonListener implements ActionListener translator.setRootBlockName("loop"); Block loopBlock = renderableBlock.getBlock(); code.append(translator.translate(loopBlock.getBlockID())); + loop=(SimCodeFunction) translator.simulate(loopBlock.getBlockID()); //collect simcode objects here -> all SimCodeObjects inside main loop //eg. simList.append(translator.simulate(loopBlock.getBlockID())); -> simList = simCodeObject-List } @@ -301,7 +306,7 @@ public class SimulateCodeButtonListener implements ActionListener System.out.println(codeOut); } context.didGenerate(codeOut, false); - + sim.addFunctionsCode(loop); //TODO ! start simulator here //sim.run(); //sim.startSimu(); -- GitLab