Benutzer-Werkzeuge

Webseiten-Werkzeuge


virtuelles_java-teleskop

Dies ist eine alte Version des Dokuments!


virtelles Java-Teleskop

Übersicht

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 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.

Software

Details

Software

Installation und Inbetriebnahme

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

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);
	}
 
}
virtuelles_java-teleskop.1561373051.txt.gz · Zuletzt geändert: 2020/11/22 16:52 (Externe Bearbeitung)