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/26 19:54] – [Quellcode Projekt A] torsten.roehl | virtuelles_java-teleskop [2020/11/22 16:19] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 52: | Zeile 52: | ||
| == Test 1: Konsole == | == Test 1: Konsole == | ||
| - | Ein erste Test erfolgt mit einer User-Konsole, | + | Ein erste Test erfolgt mit einer User-Konsole, | 
|   echo ": |   echo ": | ||
|    |    | ||
| Auf der Konsole (Eclipse) sollten jetzt die Anzahl der gelesenen Bytes angezeigt werden. Damit funktioniert die Kommunikation über die virtuelle serielle Schnittstelle. | Auf der Konsole (Eclipse) sollten jetzt die Anzahl der gelesenen Bytes angezeigt werden. Damit funktioniert die Kommunikation über die virtuelle serielle Schnittstelle. | ||
| + | |||
| + |   - Schnittstelle einrichten (socat, | ||
| + |   - Java // | ||
| + |   - In einer Userkonsole //echo ": | ||
| Zeile 62: | Zeile 66: | ||
| Der zweite Test ist spannender, da wir mit Stellarium kommunizieren. | Der zweite Test ist spannender, da wir mit Stellarium kommunizieren. | ||
| - | lx200 Teleskop einrichten mit / | + |   - LX200 Teleskop einrichten mit / | 
| + | - Schnittstelle einrichten (socat, chmod) | ||
| + |   - Java // | ||
| + | - LX200 Teleskop in Stellarium verbinden | ||
| - |    | + | ===== Quellcode Projekt A ===== | 
| + | |||
| + | Das Protokoll kann hier eingesehen werden {{ : | ||
| - | ==== Quellcode Projekt A ==== | + | 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 91: | 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 108: | 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; | 
| - | + | case CMD_MS: | |
| - | 						currentDE = msg.substring(msg.indexOf(' | + | 					writeMessage(serialPort, | 
| - | 						targetDE = currentDE; | + | 					simulateMove(); | 
| - | 						writeMessage(serialPort, | + | 					break; | 
| - | } | + | 				case CMD_UNKNOWN: | 
| - | 					if (msg.startsWith(" | + | 					if (!msg.startsWith(" | 
| - | 						writeMessage(serialPort,  | + | 						System.out.println("...received unknown serial command:  | 
| - | simulateMove(); | + | break; | 
| - | } | + | |
| } | } | ||
| Zeile 152: | 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; | ||
| } | } | ||
| static String decode(SerialPort serialPort) { | static String decode(SerialPort serialPort) { | ||
| try { | try { | ||
| - | |||
| // step 1: read bytes from port | // step 1: read bytes from port | ||
| 			byte[] buffer = serialPort.readBytes(); | 			byte[] buffer = serialPort.readBytes(); | ||
| // step 2: verify | // step 2: verify | ||
| if (buffer == null) | if (buffer == null) | ||
| - | return "UNKNOW COMMAND"; | + | return "zero buffer"; | 
| 			int numRead = buffer.length; | 			int numRead = buffer.length; | ||
| if (buffer.length <= 0) | if (buffer.length <= 0) | ||
| - | return "UNKNOW COMMAND"; | + | return "zero length"; | 
| // step 3: convert buffer to string | // step 3: convert buffer to string | ||
| Zeile 185: | Zeile 213: | ||
| } | } | ||
| - | return "UNKNOW 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 253: | Zeile 290: | ||
| } | } | ||
| - | static boolean isMessage(String msg) { | + | } | 
| - | 		if (msg.equals(" | + | |
| - | return false; | + | |
| - | return true; | + | |
| - | } | + | |
| - | static void writeMessage(SerialPort p, String msg) { | ||
| - | try { | + | </ | 
| - | 			byte[] buffer = msg.getBytes(); | + | <WRAP center round info 90%> | 
| - | p.writeBytes(buffer); | + | Das dieses einfache Programm  | 
| - | } catch (SerialPortException e) { | + | </ | 
| - | e.printStackTrace(); | + | |
| - | } | + | |
| - | } | + | |
| - | } | ||
| - | |||
| - | </ | ||
virtuelles_java-teleskop.1561578894.txt.gz · Zuletzt geändert:  (Externe Bearbeitung)
                
                