diff --git a/Praktikum/VINF_MaerklinControl/.classpath b/Praktikum/VINF_MaerklinControl/.classpath index 423fc1c028e9c1fd9775f261ca668d3c11307374..ef0f0db4af6180ed5196999f319a0c944249c726 100644 --- a/Praktikum/VINF_MaerklinControl/.classpath +++ b/Praktikum/VINF_MaerklinControl/.classpath @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> - <classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/> - <classpathentry kind="lib" path="D:/Users/Philipp/gitlab/VInf/Praktikum/VINF_MaerklinControl/controlsfx-8.40.12.jar"/> - <classpathentry kind="output" path="bin"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/> + <classpathentry kind="lib" path="/home/lukas/VInf/Praktikum/VINF_MaerklinControl/controlsfx-8.40.12.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Praktikum/VINF_MaerklinControl/bin/.gitignore b/Praktikum/VINF_MaerklinControl/bin/.gitignore deleted file mode 100644 index ad3d6b1e1acb320d8e6c9ac6f380dfd4976b76e7..0000000000000000000000000000000000000000 --- a/Praktikum/VINF_MaerklinControl/bin/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/common/ -/gui/ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5f7bff039ae9e9fac94654d9731e78941721921f Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$1.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class new file mode 100644 index 0000000000000000000000000000000000000000..52b295989212a8cf50796042d80b93876beca142 Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$2.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class new file mode 100644 index 0000000000000000000000000000000000000000..721229655a516e2f583e8c4aff4315024b473f99 Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection$3.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class new file mode 100644 index 0000000000000000000000000000000000000000..abf9f4e0db7a71c616c8c917f97ef954f63fca27 Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$EstablishConnection.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a2c6505b1683e102526d9713d3f2609712a1f5b5 Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality$1.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class new file mode 100644 index 0000000000000000000000000000000000000000..9ae81e7efe023ff6ee577cdadb8e82860609ef83 Binary files /dev/null and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp$UpdateFunctionality.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class index 58bed3efc17a1abc3ea3c7b715371bce1fcc873c..b376dcc578cdbfe55b17ae8790c028983d407496 100644 Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class and b/Praktikum/VINF_MaerklinControl/bin/gui/MainApp.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/view/ControlTabs.fxml b/Praktikum/VINF_MaerklinControl/bin/gui/view/ControlTabs.fxml deleted file mode 100644 index 8ef2406765ab10f9f70a3a222e8b1b2b89eca728..0000000000000000000000000000000000000000 --- a/Praktikum/VINF_MaerklinControl/bin/gui/view/ControlTabs.fxml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.Tab?> -<?import javafx.scene.control.TabPane?> -<?import javafx.scene.layout.AnchorPane?> - -<AnchorPane prefHeight="600.0" prefWidth="340.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <TabPane layoutX="10.0" layoutY="10.0" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> - <tabs> - <Tab text="Loks"> - <content> - <fx:include source="Engine.fxml" /> - </content> - </Tab> - <Tab text="Weichen"> - <content> - <fx:include source="SwitchList.fxml" /> - </content> - </Tab> - <Tab text="Drehscheibe"> - <content> - <fx:include source="Turntable.fxml" /> - </content> - </Tab> - <Tab text="Verbindung"> - <content> - <fx:include source="Settings.fxml" /> - </content> - </Tab> - </tabs> - </TabPane> - </children> -</AnchorPane> diff --git a/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class b/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class index 06031cbb88424aba6ae1302ab7dd6d0f0982b52e..0923efc00374208b57eb94f6414e4750bfeda6a7 100644 Binary files a/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class and b/Praktikum/VINF_MaerklinControl/bin/gui/view/EngineController.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class b/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class index afe7a4d2062fca83c9266f25ce3c80bae44dadef..a30f632a905c4237764ac5b3635bcbf7cf9d406b 100644 Binary files a/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class and b/Praktikum/VINF_MaerklinControl/bin/server/MaerklinServer.class differ diff --git a/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class b/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class index e6135278ddd85b2a8729ae560a1c96bef8076e53..739f64cfde4ac5c302dcba68ba9caab5cf5df178 100644 Binary files a/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class and b/Praktikum/VINF_MaerklinControl/bin/server/UDPListener.class differ diff --git a/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java b/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java index fc13d4868095e42e0f3b2e05a0c12f5a6cbb7165..e90aec90510bff1d8f13e7d069ad6f0dc474013a 100644 --- a/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java +++ b/Praktikum/VINF_MaerklinControl/src/gui/MainApp.java @@ -306,7 +306,7 @@ public class MainApp extends Application { settingsController.updateSettingsStatus(); } catch (Exception e) { - setStatus("Error at: establishConnection (shutting down connection"); + setStatus("Error at: establishConnection (shutting down connection)"); e.printStackTrace(); } } @@ -323,16 +323,22 @@ public class MainApp extends Application { CONTROLLER_INSTANCE = controller; } + public void updateGUI () { + engineController.updateEngineStatus(); + for (Switch sw : switches){ + sw.getController().get().updateSwitchStatus(); + } + } + @Override public void run() { - Thread.yield(); if (!connectionEstablished) { - try (Socket socket = new Socket(configuration.getSocketAddress().get().getHostName(), configuration.getSocketAddress().get().getPort())) { + try (Socket socket = new Socket(configuration.getSocketAddress().get().getHostName(), configuration.getSocketAddress().get().getPort()); InputStream inStream = socket.getInputStream(); OutputStream outStream = socket.getOutputStream();) { client = socket; client.setKeepAlive(true); client.setReuseAddress(true); - in = client.getInputStream(); - out = client.getOutputStream(); + in = inStream; + out = outStream; connectionEstablished = true; running = true; UTILITY_THREAD_EXECUTOR.submit((new UpdateFunctionality(CONTROLLER_INSTANCE, in))); @@ -346,23 +352,31 @@ public class MainApp extends Application { }); while (connectionEstablished) { - Thread.sleep(100); + Platform.runLater(new Runnable() { + + @Override + public void run() { + updateGUI(); + } + + }); + Thread.sleep(50); } } catch (Exception e) { + connectionEstablished = false; + running = false; Platform.runLater(new Runnable() { @Override public void run() { - CONTROLLER_INSTANCE.setStatus("Error at: establishConnection (establishing connection"); + CONTROLLER_INSTANCE.setStatus("Error at: establishConnection (establishing connection)"); + CONTROLLER_INSTANCE.settingsController.updateSettingsStatus(); } }); e.printStackTrace(); } - finally { - CONTROLLER_INSTANCE.UTILITY_THREAD_EXECUTOR.shutdownNow(); - } } } } @@ -409,13 +423,6 @@ public class MainApp extends Application { } } - public void updateGUI () { - engineController.updateEngineStatus(); - for (Switch sw : switches){ - sw.getController().get().updateSwitchStatus(); - } - } - @Override public void run() { int stopCounter, dataCounter, counter; @@ -457,14 +464,6 @@ public class MainApp extends Application { while (INPUT_STREAM.available() != 0) { INPUT_STREAM.read(); } - Platform.runLater(new Runnable() { - - @Override - public void run() { - updateGUI(); - } - - }); Thread.sleep(50); } } diff --git a/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java b/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java index c2774bd217d4ce717b1fc7c705dc880e43323880..a716f55e8c741cf5cd31a9f76ee7e70bbac52b10 100644 --- a/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java +++ b/Praktikum/VINF_MaerklinControl/src/server/MaerklinServer.java @@ -151,9 +151,9 @@ public class MaerklinServer{ // Starts the thread to broadcast the current status public void statusUpdate(){ for (Socket clientSocket : clients) { - try { + try (OutputStream outStream = clientSocket.getOutputStream()){ //System.out.println("Updating client: "+clientSocket.getRemoteSocketAddress()); - UTILITY_THREAD_EXECUTOR.submit(new UpdateThread(clientSocket.getOutputStream())); + UTILITY_THREAD_EXECUTOR.submit(new UpdateThread(outStream)); } catch (IOException e) { System.out.println("Failed to receive output-stream of one of the clients!"); diff --git a/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java b/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java index 0563ea5fa357bd093b18b96b28b25408bf8b7f23..127e4df5452c25e30587e4b3ecbc9a42080efab5 100644 --- a/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java +++ b/Praktikum/VINF_MaerklinControl/src/server/UDPListener.java @@ -7,12 +7,16 @@ import javax.xml.bind.DatatypeConverter; public class UDPListener implements Runnable{ + // Defining the size of the datagrams received from the Maerklin-control-station + public final static int MAERKLIN_DATAGRAM_SIZE = 13; + + // Listener-port private final static int port = 15730; - private byte[] in = new byte[13]; + private byte[] in; public UDPListener(){ - // Nothing to do... + in = new byte[MAERKLIN_DATAGRAM_SIZE]; } public void listen(){ @@ -97,7 +101,7 @@ public class UDPListener implements Runnable{ for (Engine train : Engine.engines){ if (train.getEngineID() == getAddress()){ train.engineSpeed = getEngineSpeed(); - //System.out.println("Speed of Engine "+train.getEngineID()+" changed to "+train.getEngineSpeed()); + System.out.println("Speed of Engine "+train.getEngineID()+" changed to "+train.getEngineSpeed()); break; } } @@ -106,7 +110,7 @@ public class UDPListener implements Runnable{ for (Engine train : Engine.engines){ if (train.getEngineID() == getAddress()){ train.engineDirection = getEngineDirection(); - //System.out.println("Direction of Engine "+train.getEngineID()+" changed to "+train.getEngineDirection()); + System.out.println("Direction of Engine "+train.getEngineID()+" changed to "+train.getEngineDirection()); break; } } @@ -115,7 +119,7 @@ public class UDPListener implements Runnable{ for (Switch sw : Switch.switches){ if (sw.getSwitchID() == getAddress()){ sw.switchDirection = getEngineDirection(); - //System.out.println("Direction of Switch "+sw.getSwitchID()+" changed to "+sw.getSwitchDirection()); + System.out.println("Direction of Switch "+sw.getSwitchID()+" changed to "+sw.getSwitchDirection()); break; } }