Benutzer-Werkzeuge

Webseiten-Werkzeuge


teleskop_steuerung_fuer_c8

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
teleskop_steuerung_fuer_c8 [2019/06/24 10:22] torsten.roehlteleskop_steuerung_fuer_c8 [2020/11/22 16:19] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 43: Zeile 43:
 ==== Bau und Inbetriebnahme der Steuerung ==== ==== Bau und Inbetriebnahme der Steuerung ====
  
 +Zuerst wird ein virtuelles Java-Teleskop in den Grundzügen vorgestellt (Projekt A). Da es das Ziel ist,ein reales C8-Teleskop anzusteuern, wird anschließend auf echte Hardware (Arduino-Nano) umgestiegen. Allerdings entwickeln wir auch hier vorerst ein virtuelles (simuliertes) Teleskop (Projekt B).
 +Das im Projekt B entworfene virtuelle Arduino-Teleskop dient als Skelett für die eigentliche Software der Steuerelektronik (Projekt C). Außerdem wird noch ein INDI-Treiber zur Verfügung gestellt, so dass alle INDI-Client Programme verwendet werden können.
  
-===  Simulation mit Java === 
  
-[[virtuelles Java-Teleskop]] +  * Projekt A: [[virtuelles Java-Teleskop]] 
- +  * Projekt B: [[virtuelles Arduino-Teleskop]] 
-Die grundsätzliche Arbeitsweise kann man auch ohne Elektronik (& Teleskop) studieren. Die drei großen Clients (KStart, Skychart und Stellarium) können mit der Indi-Schnittstelle kommunizieren und +  Projekt C: [[DIY Teleskop-Steuerung]] 
-virtuelle Teleskopmontierungen einbinden. Diese Teleskopsimulatoren sind technisch gesehen INDI-C++-Treiber. Ich erzeuge hier z.B. mit Java eine virtuelle serielle Schnittstelle und benutze "täusche" eine +
-LX200 Montierung vor um dann mit Stellarium dieses virtuelle Teleskop zu verwenden. +
- +
-Die auf diese Weise angelegte  Schnittstelle muss häufig neu eingerichtet werden (Schritte 1 und 2) +
-) und soll nur die grundlegende Kommunikation aufzeigen. +
- +
- +
-1. Virtuelle serielle Schnittstelle erzeugen +
- +
-  socat -d -d PTY,link=/dev/ttyUSB60 PTY,link=/dev/ttyUSB61 +
- +
-2.Rechte setzen +
- +
-  # chmod 777 /dev/ttyUSB6* +
- +
-3. Testen +
- +
- i) Konsole +
- +
-  echo ":GD#" > /dev/ttyUSB60 +
-   +
-Simulator.java sollte Nachricht anzeigen! +
- +
- ii) Stellarium +
- +
-lx200 Teleskop einrichten mit /dev/ttyUSB60 als Device +
- +
- +
- +
- +
- <code java> +
-package test; +
- +
-import com.fazecast.jSerialComm.SerialPort; +
- +
-public class Test01 { +
- +
- public static void main(String[] args) { +
- SerialPort comPort = SerialPort.getCommPorts()[2]+
- comPort.openPort(); +
- comPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 100, 0); +
- try { +
- while (true) { +
- byte[readBuffer = new byte[1024]; +
- int numRead = comPort.readBytes(readBuffer, readBuffer.length); +
- +
- if (numRead > 0) { +
- plot(numRead, readBuffer); +
- +
- if(getRADEC(numRead,readBuffer)){ +
- System.out.println("received radec messgage"); +
- writeRADEC(comPort); +
-+
- if (isGetRA(numRead, readBuffer)) { +
- System.out.println("received ra messgage"); +
- writeRa(comPort); +
-+
- if (isGetDec(numRead, readBuffer)) { +
- System.out.println("received dec messgage"); +
- writeDec(comPort); +
-+
- // +
-+
- Thread.sleep(100); +
- +
-+
- } catch (Exception e) { +
- e.printStackTrace(); +
-+
- comPort.closePort(); +
- +
-+
- +
- static void plot(int numRead, byte[] readBuffer) { +
- System.out.println("Read " + numRead + " bytes."); +
- +
- for (int i = 0; i < numRead; i++) { +
- char c = (char) readBuffer[i]; +
- System.out.print(c); +
-+
- System.out.println(""); +
-+
- static boolean getRADEC(int num, byte[] readBuffer) { +
- char c[] = new char[num]; +
- if (readBuffer.length < 1) +
- return false; +
- +
- for (int i = 0; i < num; i++) { +
- c[i] = (char) readBuffer[i]; +
- +
-+
- +
- if (c[0] == 'e' ) { +
- return true; +
-+
- +
- return false; +
-+
-  +
- static void writeRADEC(SerialPort p) { +
- +
- String str = "34AB0500,12CE0500#"; +
- byte[] buffer = new byte[18]; +
- byte[] byte_str = str.getBytes(); +
- for (int i = 0; i < 18; i++) +
- buffer[i] = byte_str[i]; +
- +
-// buffer[9] = 0x0D; +
-// buffer[10] = 0x0A; +
- +
- p.writeBytes(buffer, (long) buffer.length); +
-+
-  +
-  +
-  +
-  +
-  +
-  +
-  +
-  +
- static boolean isGetRA(int num, byte[] readBuffer) { +
- char c[] = new char[num]; +
- if (readBuffer.length < 4) +
- return false; +
- +
- for (int i = 0; i < num; i++) { +
- c[i] = (char) readBuffer[i]; +
- +
-+
- +
- if (c[0] == '#' && c[1] == ':' && c[2] == 'G' && c[3] == 'R' && c[4] == '#') { +
- return true; +
-+
- +
- return false; +
-+
- +
- static boolean isGetDec(int num, byte[] readBuffer) { +
- char c[] = new char[num]; +
- if (readBuffer.length < 4) +
- return false; +
- +
- for (int i = 0; i < num; i++) { +
- c[i] = (char) readBuffer[i]; +
- +
-+
- +
- if (c[0] == '#' && c[1] == ':' && c[2] == 'G' && c[3] == 'D' && c[4] == '#') { +
- return true; +
-+
- +
- return false; +
-+
- +
- static void writeRa(SerialPort p) { +
- +
- String str = "14:15:00#"; +
- byte[] buffer = new byte[9]; +
- byte[] byte_str = str.getBytes(); +
- for (int i = 0; i < 9; i++) +
- buffer[i] = byte_str[i]; +
- +
-// buffer[9] = 0x0D; +
-// buffer[10] = 0x0A; +
- +
- p.writeBytes(buffer, (long) buffer.length); +
-+
- +
- static void writeDec(SerialPort p) { +
- String str = "+19*10#"; +
- //"%c%02d%c%02d:%02d#" +
- byte[] buffer = new byte[7]; +
- byte[] byte_str = str.getBytes(); +
- for (int i = 0; i < 7; i++) +
- buffer[i] = byte_str[i]; +
-// +
-// buffer[7] = 0x0D; +
-// buffer[8] = 0x0A; +
- +
- p.writeBytes(buffer, (long) buffer.length); +
-+
- +
-+
- +
-</code> +
- +
- +
-[[DIY Teleskop-Steuerung]] +
    
  
teleskop_steuerung_fuer_c8.1561371749.txt.gz · Zuletzt geändert: 2020/11/22 16:51 (Externe Bearbeitung)