Антон Сибгатулин Asked:2022-12-31 21:51:23 +0000 UTC2022-12-31 21:51:23 +0000 UTC 2022-12-31 21:51:23 +0000 UTC 如何从 flightgear 获取仪表数据? 772 我需要从flightgear的飞机仪器中获取数据以开发自动驾驶仪。 什么程序可以从 flightgear 获取仪器读数并通过套接字将它们传输到我的应用程序?还是不用第三方软件就可以完成? java 1 个回答 Voted Best Answer Anton Sibgatulin 2023-01-02T02:17:44Z2023-01-02T02:17:44Z https://wiki.flightgear.org/Telnet_usage --telnet=socket,bi,5,,5500,flightgear 启动设置中的 tcp 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); } } }
https://wiki.flightgear.org/Telnet_usage
--telnet=socket,bi,5,,5500,flightgear 启动设置中的 tcp
你可以这样使用: