diff --git a/pom.xml b/pom.xml index 7d88195..be8d44b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 0.5.1 + 0.5.2 Web4Rail Java Model Railway Control https://github.com/StephanRichter/Web4Rail diff --git a/src/main/java/de/srsoftware/web4rail/ControlUnit.java b/src/main/java/de/srsoftware/web4rail/ControlUnit.java index c02ca6d..295e250 100644 --- a/src/main/java/de/srsoftware/web4rail/ControlUnit.java +++ b/src/main/java/de/srsoftware/web4rail/ControlUnit.java @@ -15,6 +15,7 @@ public class ControlUnit extends Thread{ private static final int DEFAULT_PORT = 4303; private static final int OK_PROTO = 201; private static final int OK_MODE = 202; + private static final int OK = 200; private class Reply{ private long secs; @@ -41,6 +42,7 @@ public class ControlUnit extends Thread{ private String host = DEFAULT_HOST; private int port = DEFAULT_PORT; + private int bus = 0; private boolean stopped = true; private LinkedList queue = new LinkedList(); private Socket socket; @@ -56,13 +58,20 @@ public class ControlUnit extends Thread{ public static void main(String[] args) throws InterruptedException { - ControlUnit cu = new ControlUnit().setEndpoint("Modellbahn", DEFAULT_PORT).restart(); + ControlUnit cu = new ControlUnit().setEndpoint("Modellbahn", DEFAULT_PORT).setBus(1).restart(); Thread.sleep(1000); - cu.queue("SET 0 GL 1 0 10"); + cu.queue("SET {} POWER ON"); + cu.queue("SET {} GL 1 0 10 128"); Thread.sleep(1000); cu.end(); } + private ControlUnit setBus(int bus) { + this.bus = bus; + return this; + } + + public void queue(String command) { queue.add(command); } @@ -98,12 +107,13 @@ public class ControlUnit extends Thread{ /** * send command to Server * @param command + * @return * @throws IOException */ - private void send(String command) throws IOException { - if (command == null) return; + private Reply send(String command) throws IOException { + if (command == null) return null; writeln(command); - Reply reply = new Reply(scanner); + return new Reply(scanner); } public ControlUnit setEndpoint(String newHost, int newPort){ @@ -143,12 +153,17 @@ public class ControlUnit extends Thread{ Reply reply = new Reply(scanner); if (reply.code != OK_PROTO) throw new IOException("Handshake failed: "+reply); - writeln("SET CONNECTIONMODE SRCP COMMAND"); + writeln("SET CONNECTIONMODE SRCP COMMAND"); // preset following mode: COMMAND MODE reply = new Reply(scanner); if (reply.code != OK_MODE) throw new IOException("Handshake failed: "+reply); + writeln("GO"); // switch mode + reply = new Reply(scanner); + if (reply.code != OK) throw new IOException("Handshake failed: "+reply); + } private void writeln(String data) throws IOException { + data = data.replace("{}", ""+bus); socket.getOutputStream().write((data+"\n").getBytes(StandardCharsets.US_ASCII)); LOG.debug("sent {}.",data); }