Как получать данные приборов из flightgear?
Мне нужно получать данные с приборов самолета из flightgear для разработки автопилота.
Какая программа может получить из flightgear показания с приборов и передать их по сокетам в мое приложение? Или это можно сделать без сторонних программ?
Ответы (1 шт):
Автор решения: Anton Sibgatulin
→ Ссылка
https://wiki.flightgear.org/Telnet_usage
--telnet=socket,bi,5,,5500,tcp в настройках запуска flightgear
import java.io.*;
import java.net.Socket;
public class SocketClient {
public String host = null;
public int port = 0;
public BufferedReader bufferedReader = null;
public BufferedWriter bufferedWriter = null;
public PrintWriter out = null;
public Socket socket = null;
public Thread readThread = new Thread(new Runnable() {
@Override
public void run() {
while(true){
String string = null;
try {
string = bufferedReader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
if(string!=null){
System.out.println(string);
}
}
}
});
public void write(String text){
/* bufferedWriter.write(text+'\r');
bufferedWriter.flush();*/
//out.write(text+"\r");
out.write(text);
out.write(System.lineSeparator());
out.flush();
}
public SocketClient(String host,int port){
this.host = host;
this.port = port;
try {
socket = new Socket(host,port);
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
} catch (IOException e) {
e.printStackTrace();
}
readThread.start();
}
}
Использовать можно вот так:
public static void main(String...args){
SocketClient socketClient = new SocketClient("localhost",5500);
Scanner scanner = new Scanner(System.in);
while(true){
String str = scanner.nextLine();
if(str!=null){
socketClient.write(str);
}
}
}