X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fruntime%2Fsrc%2Fnl%2Fru%2Fdes%2FLCDPrinter.java;h=c041f4dc4e46e014dc8bac0c1edad3caa3450508;hb=49495a0fe049791c0f45de4ac2177d45ca373265;hp=ea39f52e9d9fc0eec02f960aa11c6afd73c11194;hpb=e880e959fed2d3506a790d3b361a2ed4aa49a95f;p=des2015.git diff --git a/dsl/runtime/src/nl/ru/des/LCDPrinter.java b/dsl/runtime/src/nl/ru/des/LCDPrinter.java index ea39f52..c041f4d 100644 --- a/dsl/runtime/src/nl/ru/des/LCDPrinter.java +++ b/dsl/runtime/src/nl/ru/des/LCDPrinter.java @@ -11,8 +11,18 @@ import lejos.utility.Delay; public class LCDPrinter{ public static final int PRINTDELAY = 50; + + private static class Message{ + public String msg; + public boolean nl; + + public Message(String msg, boolean nl){ + this.msg = msg; + this.nl = nl; + } + } - private static Deque buffer = new LinkedList(); + private static Deque buffer = new LinkedList(); public static void startLCDPrinter(final TextLCD glcd) { new Thread(new Runnable(){ @@ -20,13 +30,17 @@ public class LCDPrinter{ public void run() { while (true) { if (!buffer.isEmpty()) { - String c = buffer.remove(); - if(c.length() > glcd.getTextWidth()){ - buffer.addFirst(c.substring(glcd.getTextWidth(), c.length())); - c = c.substring(0, glcd.getTextWidth()); + Message c = buffer.remove(); + if(c.msg.length() > glcd.getTextWidth()){ + buffer.addFirst(new Message(c.msg.substring(glcd.getTextWidth(), c.msg.length()), c.nl)); + c.msg = c.msg.substring(0, glcd.getTextWidth()); + } + if(c.nl){ + glcd.scroll(); + } else { + glcd.clear(glcd.getTextHeight()-1); } - glcd.scroll(); - glcd.drawString(c, 0, glcd.getTextHeight()-1); + glcd.drawString(c.msg, 0, glcd.getTextHeight()-1); } Delay.msDelay(PRINTDELAY); } @@ -36,7 +50,11 @@ public class LCDPrinter{ } public static void print(String s){ - buffer.addLast(s); + print(s, true); + } + + public synchronized static void print(String s, boolean nl){ + buffer.addLast(new Message(s, nl)); } public static PrintStream getPrefixedPrintstream(final String prefix, final TextLCD glcd){