virtuelles_java-teleskop
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| virtuelles_java-teleskop [2019/06/27 06:02] – torsten.roehl | virtuelles_java-teleskop [2020/11/22 16:19] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 72: | Zeile 72: | ||
| - | | + | ===== Quellcode Projekt A ===== |
| - | == Quellcode Projekt A == | + | Das Protokoll kann hier eingesehen werden {{ : |
| + | Das Javaprogramm implementiert nur wenige Kommandos des Protokolls. Nachdem Stellarium sich mit dem " | ||
| + | |||
| + | Wenn mit Stellarium geschwenkt werden soll, d.h. ein bestimmtes Objekt angefahren werden soll, werden drei Kommandos geschickt. Die ersten beiden Kommandos übermitteln die Zielkoordinaten, | ||
| <code java> | <code java> | ||
| Zeile 98: | Zeile 101: | ||
| static String dev = "/ | static String dev = "/ | ||
| + | |||
| + | public enum Protocol // some serial lx200 commands | ||
| + | { | ||
| + | CMD_GR, CMD_GD, CMD_QS, CMD_SD, CMD_MS, CMD_UNKNOWN | ||
| + | } | ||
| public static void main(String[] args) throws InterruptedException { | public static void main(String[] args) throws InterruptedException { | ||
| Zeile 115: | Zeile 123: | ||
| while (true) { | while (true) { | ||
| - | // read message | ||
| String msg = decode(serialPort); | String msg = decode(serialPort); | ||
| + | Protocol cmd = protocol(msg); | ||
| - | // run through protocol | + | switch |
| - | if | + | case CMD_GR: |
| - | + | writeMessage(serialPort, | |
| - | System.out.println(" | + | break; |
| - | + | case CMD_GD: | |
| - | if (msg.startsWith("#: | + | writeMessage(serialPort, |
| - | writeMessage(serialPort, | + | break; |
| - | } | + | case CMD_QS: |
| - | if (msg.startsWith("# | + | targetRA = msg.substring(msg.indexOf(' |
| - | writeMessage(serialPort, | + | writeMessage(serialPort, |
| - | } | + | break; |
| - | if (msg.startsWith("# | + | case CMD_SD: |
| - | targetRA = msg.substring(msg.indexOf(' | + | currentDE = msg.substring(msg.indexOf(' |
| - | writeMessage(serialPort, | + | targetDE = currentDE; |
| - | } | + | writeMessage(serialPort, |
| - | if (msg.startsWith(" | + | break; |
| - | currentDE = msg.substring(msg.indexOf(' | + | case CMD_MS: |
| - | targetDE = currentDE; | + | writeMessage(serialPort, |
| - | writeMessage(serialPort, | + | simulateMove(); |
| - | } | + | break; |
| - | if (msg.startsWith(" | + | case CMD_UNKNOWN: |
| - | writeMessage(serialPort, | + | if (!msg.startsWith(" |
| - | simulateMove(); | + | System.out.println("...received unknown serial command: |
| - | } | + | break; |
| } | } | ||
| Zeile 158: | Zeile 165: | ||
| } | } | ||
| + | } | ||
| + | |||
| + | private static Protocol protocol(String msg) { | ||
| + | |||
| + | if (msg.startsWith("#: | ||
| + | return Protocol.CMD_GR; | ||
| + | if (msg.startsWith("#: | ||
| + | return Protocol.CMD_GD; | ||
| + | if (msg.startsWith("#: | ||
| + | return Protocol.CMD_QS; | ||
| + | if (msg.startsWith(": | ||
| + | return Protocol.CMD_SD; | ||
| + | if (msg.startsWith(": | ||
| + | return Protocol.CMD_MS; | ||
| + | |||
| + | return Protocol.CMD_UNKNOWN; | ||
| } | } | ||
| Zeile 166: | Zeile 189: | ||
| // step 2: verify | // step 2: verify | ||
| if (buffer == null) | if (buffer == null) | ||
| - | return "UNKNOWN COMMAND"; | + | return "zero buffer"; |
| int numRead = buffer.length; | int numRead = buffer.length; | ||
| if (buffer.length <= 0) | if (buffer.length <= 0) | ||
| - | return "UNKNOWN COMMAND"; | + | return "zero length"; |
| // step 3: convert buffer to string | // step 3: convert buffer to string | ||
| Zeile 190: | Zeile 213: | ||
| } | } | ||
| - | return "UNKNOWN COMMAND"; | + | return "should not happen"; |
| + | } | ||
| + | |||
| + | static void writeMessage(SerialPort p, String msg) { | ||
| + | try { | ||
| + | byte[] buffer = msg.getBytes(); | ||
| + | p.writeBytes(buffer); | ||
| + | } catch (SerialPortException e) { | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| } | } | ||
| Zeile 256: | Zeile 288: | ||
| Timer timer = new Timer(" | Timer timer = new Timer(" | ||
| timer.scheduleAtFixedRate(repeatedTask, | timer.scheduleAtFixedRate(repeatedTask, | ||
| - | } | ||
| - | |||
| - | static boolean isMessage(String msg) { | ||
| - | if (msg.equals(" | ||
| - | return false; | ||
| - | return true; | ||
| - | } | ||
| - | |||
| - | static void writeMessage(SerialPort p, String msg) { | ||
| - | try { | ||
| - | byte[] buffer = msg.getBytes(); | ||
| - | p.writeBytes(buffer); | ||
| - | } catch (SerialPortException e) { | ||
| - | e.printStackTrace(); | ||
| - | } | ||
| } | } | ||
| Zeile 277: | Zeile 294: | ||
| </ | </ | ||
| + | <WRAP center round info 90%> | ||
| + | Das dieses einfache Programm (die nur wenige Kommandos des Protokolls implementiert) funktioniert, | ||
| + | </ | ||
| + | |||
virtuelles_java-teleskop.1561615326.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
