Files
XPlaneConnectCSP/Java/PROJECT BACKUPS/2024-12-14 ProjectModels/Model-1/src/Main1.java
2025-01-24 09:33:57 -05:00

632 lines
21 KiB
Java
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
//import ModelFiles.*;
//
//import java.io.BufferedWriter;
//import java.io.File;
//import java.io.FileWriter;
//import java.io.IOException;
//import java.net.SocketException;
//import java.util.Arrays;
//import javax.swing.*;
//import javax.swing.border.Border;
//import javax.imageio.ImageIO;
//import java.awt.Graphics;
//import java.awt.image.BufferedImage;
//
//import java.awt.*;
//
///**
// * An example program demonstrating the basic features of the X-Plane Connect toolbox.
// *
// * @author Jason Watkins
// * @version 1.0
// * @since 2015-04-06
// */
//public class Main
//{
// public static void main(String[] args) {
// System.out.println("X-Plane Connect example program");
// System.out.println("Setting up simulation...");
// JFrame frame = new JFrame();
//
// try(XPlaneConnect xpc = new XPlaneConnect())
// {
// // Ensure connection established.
// xpc.getDREF("sim/test/test_float");
//
// // System.out.println("Setting player aircraft position");
// // double[] posi = new double[] {37.524, -122.06899, 2500, 0, 0, 0, 1};
// // xpc.sendPOSI(posi);
//
// // System.out.println("Setting another aircraft position");
// // posi[0] = 37.52465;
// // posi[4] = 20;
// // xpc.sendPOSI(posi, 1);
//
// System.out.println("Setting rates");
// float[][] data = new float[3][9];
// for(float[] row : data)
// {
// Arrays.fill(row, -998);
// }
// data[0][0] = 0; //Alpha
// data[0][1] = 0;
// data[0][3] = 0;
//
// data[1][0] = 0; //Velocity
// data[1][1] = 0;
// data[1][2] = 0;
// data[1][3] = 0;
// data[1][4] = 0;
//
// data[2][0] = 0; //PQR
// data[2][1] = 0;
// data[2][2] = 0;
// data[2][3] = 0;
//
// xpc.sendDATA(data);
//
// System.out.println("Trying something new!!");
//
//
// frame.setPreferredSize(new Dimension(1700,270));
// frame.setLayout(new GridLayout(1,2));
// frame.setVisible(true);
//
// JPanel display = new JPanel();
// display.setPreferredSize(new Dimension(100,100));
// display.setLayout(new GridLayout(2,4));
//
// Font fontTitles = new Font("Impact", 1,40);
// Font fontData = new Font("Monospaced", 1,30);
// JLabel titleOne = new JLabel("Elevator");
// titleOne.setFont(fontTitles);
// titleOne.setHorizontalAlignment(SwingConstants.CENTER);
// titleOne.setVerticalAlignment(SwingConstants.BOTTOM);
// JLabel titleTwo = new JLabel("Roll");
// titleTwo.setFont(fontTitles);
// titleTwo.setHorizontalAlignment(SwingConstants.CENTER);
// titleTwo.setVerticalAlignment(SwingConstants.BOTTOM);
// JLabel titleThree = new JLabel("Yaw");
// titleThree.setFont(fontTitles);
// titleThree.setHorizontalAlignment(SwingConstants.CENTER);
// titleThree.setVerticalAlignment(SwingConstants.BOTTOM);
// JLabel titleFour = new JLabel("Throttle");
// titleFour.setFont(fontTitles);
// titleFour.setHorizontalAlignment(SwingConstants.CENTER);
// titleFour.setVerticalAlignment(SwingConstants.BOTTOM);
// JLabel one = new JLabel();
// one.setFont(fontData);
// one.setHorizontalAlignment(SwingConstants.CENTER);
// one.setVerticalAlignment(SwingConstants.TOP);
// JLabel two = new JLabel();
// two.setFont(fontData);
// two.setHorizontalAlignment(SwingConstants.CENTER);
// two.setVerticalAlignment(SwingConstants.TOP);
// JLabel three = new JLabel();
// three.setFont(fontData);
// three.setHorizontalAlignment(SwingConstants.CENTER);
// three.setVerticalAlignment(SwingConstants.TOP);
// JLabel four = new JLabel();
// four.setFont(fontData);
// four.setHorizontalAlignment(SwingConstants.CENTER);
// four.setVerticalAlignment(SwingConstants.TOP);
//
// one.setText("Test");
// two.setText("Test");
// three.setText("Test");
// four.setText("Test");
// display.add(titleOne);
// display.add(titleTwo);
// display.add(titleThree);
// display.add(titleFour);
// display.add(one);
// display.add(two);
// display.add(three);
// display.add(four);
//
// JPanel visualizer = new JPanel();
// visualizer.setLayout(new GridLayout(2,1));
//
//
// //Col 1 of Visualizer
// JPanel yokeGrid = new JPanel();
// yokeGrid.setMinimumSize(new Dimension(100,100));
// //grid.setOpaque(true);
// // grid.setLayout(null);
// yokeGrid.setBackground(Color.black);
// yokeGrid.setVisible(true);
// Integer layer1 = 0;
// Integer layer2 = 1;
// // grid.setLayout(new GridLayout(1,1));
// yokeGrid.setLayout(new OverlayLayout(yokeGrid));
//
// yokePosition yoke = new yokePosition(yokeGrid.getWidth(), yokeGrid.getHeight());
// // yaw yaw = new yaw(grid.getWidth(), grid.getHeight());
// axis axis = new axis(yokeGrid.getWidth(), yokeGrid.getHeight());
//
// // grid.setLayer(axis, layer1);
// yokeGrid.add(axis);
// yokeGrid.add(yoke);
// // grid.add(yaw);
// // grid.setLayer(yoke, layer2);
//
// Border greenLine = BorderFactory.createLineBorder(Color.green);
// yokeGrid.setBorder(greenLine);
//
// visualizer.add(yokeGrid);
//
//
// //Row 2 of Visualizer
// //Rudder Vizualizer
// rudderPosition rudderGrid = new rudderPosition(yokeGrid.getWidth(), 0);
// visualizer.add(rudderGrid);
//
//
//
//
// frame.add(display); // Left Side
// frame.add(visualizer); // Right Side
// frame.pack();
//
// // JLabel text = new JLabel("Hello");
// // JLabel text2 = new JLabel("Hello");
// // JPanel display = new JPanel();
// // display.setLayout(new GridLayout());
// // display.setPreferredSize(size);
// // display.add(text);
// // display.add(text2);
//
// // container.add(display);
// // container.pack();
//
//
//
//
// int aircraft = 0;
// boolean takeoff = true;
// boolean climb = false;
// boolean cruise = false;
// boolean throttleFull = false;
// boolean brakeOff = false;
// boolean switchTrack = false;
// String dref = "sim/cockpit2/gauges/indicators/airspeed_kts_pilot";
// String dref2 = "sim/flightmodel/position/true_phi";
// String drefHDG = "sim/cockpit2/gauges/indicators/heading_AHARS_deg_mag_pilot";
// String drefHDGBug = "sim/cockpit/autopilot/heading_mag";
// String drefAltitude = "sim/cockpit2/gauges/indicators/altitude_ft_pilot";
//
// File file = new File("/Users/flyingtopher/Desktop/Code Citadel/School/2. Research/Fork Clone/XPlaneConnectCSP/Java/Project_Models/Model-1/src/output");
// if (!file.exists()) {
// file.createNewFile();
// }
// FileWriter fw = new FileWriter(file, true);
// BufferedWriter bw = new BufferedWriter(fw);
//
// while(true) {
// //THE GETTERS
// double[] posi1 = xpc.getPOSI(aircraft); // FIXME: change this to 64-bit double
// float[] ctrl1 = xpc.getCTRL(aircraft);
// float[] value = xpc.getDREF(dref);
// float[] value2 = xpc.getDREF(dref2);
// float[] valueHDG = xpc.getDREF(drefHDG);
// float[] valueHDGBug = xpc.getDREF(drefHDGBug);
// float[] valueAltitude = xpc.getDREF(drefAltitude);
// float bugged = 50;
// float rwyHDG = valueHDGBug[0];
// /*
// * Outputs
// */
// // System.out.format("\r[Elevator: %2f] [Roll: %2f] [Yaw: %2f] ---- [Throttle:%2f] ---- [Flaps: %2f] -- [Data Ref: %2f] -- [T/O: %b ][Cruise: %b ]",
// // ctrl1[0], ctrl1[1], ctrl1[2], ctrl1[3], ctrl1[5], valueAltitude[0], takeoff, cruise);
// String log = String.format("[Elevator: %2f] [Roll: %2f] [Yaw: %2f] [Throttle:%2f] [Flaps: %2f] [Data Ref: %2f] [T/O: %b ][Cruise: %b ]",
// ctrl1[0], ctrl1[1], ctrl1[2], ctrl1[3], ctrl1[5], valueAltitude[0], takeoff, cruise);
//
// one.setText(String.valueOf(ctrl1[0]));
// if(ctrl1[0] >= 0 ) {
// one.setForeground(Color.green);
// } else {
// one.setForeground(Color.red);
// }
// two.setText(String.valueOf(ctrl1[1]));
// if(ctrl1[1] >= 0 ) {
// two.setForeground(Color.green);
// } else {
// two.setForeground(Color.red);
// }
// three.setText(String.valueOf(ctrl1[2]));
// if(ctrl1[2] >= 0 ) {
// three.setForeground(Color.green);
// } else {
// three.setForeground(Color.red);
// }
// four.setText(String.valueOf(ctrl1[3]));
// if(ctrl1[3] >= 0 ) {
// four.setForeground(Color.green);
// } else {
// four.setForeground(Color.red);
// }
//
// yoke.setXBound(yokeGrid.getWidth());
// yoke.setYBound(yokeGrid.getHeight());
// yoke.setX(ctrl1[1]);
// yoke.setY(ctrl1[0]);
// yoke.repaint();
//
// rudderGrid.setXBound(yokeGrid.getWidth());
// rudderGrid.setYBound(yokeGrid.getHeight());
// rudderGrid.setX(ctrl1[2]);
// rudderGrid.repaint();
//
//
//
// // yaw.setYBound(grid.getHeight());
// // yaw.setYBound(grid.getHeight());
// // yaw.setX(ctrl1[2]);
// // yaw.repaint();
//
// axis.setXBound(yokeGrid.getWidth());
// axis.setYBound(yokeGrid.getHeight());
// axis.repaint();
//
// //Writing Data to a File
// try {
// bw.write(log + "\n");
// bw.flush();
// } catch (IOException e) {
// System.out.println("Log Data Failed");
// }
// /*
// * Flight Controls
// */
// // //Basic Autopilot For Roll (based on yoke position)
// // float[] rollRight = {-998.0f, ctrl1[1]-(ctrl1[1]/2)};
// // float[] rollLeft = {-998.0f, ctrl1[1]-(ctrl1[1]/2)};
// // if(ctrl1[1] < 0) {
// // xpc.sendCTRL(rollRight);
// // } else if(ctrl1[1] > 0) {
// // xpc.sendCTRL(rollLeft);
// // }
//
// //Basic Autopilot For Pitch (based on VSI)
// // float[] pitchUp = {ctrl1[0] + 0.01f};
// // float[] pitchDown = {ctrl1[0]- 0.01f};
// // if(value[0] < 0) {
// // xpc.sendCTRL(pitchUp);
// // } else if(value[0] > 0) {
// // xpc.sendCTRL(pitchDown);
// // }
//
//
//
// if(valueAltitude[0] > 1000f && !switchTrack && takeoff == true) {
// System.out.println("In switch");
// takeoff = false;
// cruise = true;
// switchTrack = true;
// } else if (valueAltitude[0] < 1000f && switchTrack && takeoff == true) {
// takeoff = true;
// cruise = false;
// switchTrack = false;
// }
//
//
// //Control Profiles
// if(takeoff) {
// float[] fullThrottle = {-998.0f, -998.0f, -998.0f, 1f};
// if(!throttleFull) {
// xpc.sendCTRL(fullThrottle);
// throttleFull = true;
// }
//
// if(throttleFull && !brakeOff) {
// String parkingBrake = "sim/cockpit2/controls/parking_brake_ratio";
// xpc.sendDREF(parkingBrake, 0f);
// brakeOff = true;
// }
//
// //Takeoff Pitch Control
// float[] pitchUp = {ctrl1[0] + 0.01f};
// if(value[0] > bugged) {
// if(ctrl1[0] < 0.1f){
// xpc.sendCTRL(pitchUp);
// }
// }
//
// //Takeoff Roll Control
// float[] rollRight = {-998.0f, ctrl1[1] + 0.01f};
// float[] rollLeft = {-998.0f, ctrl1[1] - 0.01f};
// if(value2[0] < 0 && value[0] > bugged) {
// if(ctrl1[1] < 0.15f) {
// xpc.sendCTRL(rollRight);
// }
//
// } else if(value2[0] > 0 && value[0] > bugged) {
// if(ctrl1[1] > -0.15f) {
// xpc.sendCTRL(rollLeft);
// }
// }
//
// //Takeoff Rudder Control 
// float[] yawRight = {-998.0f, -998.0f, ctrl1[2] + 0.03f};
// float[] yawLeft = {-998.0f, -998.0f, ctrl1[2] - 0.03f};
// if(valueHDG[0] < rwyHDG && value[0] > 0) {
//
// if(ctrl1[2] < 0.5f) {
// xpc.sendCTRL(yawRight); // YAW RIGHT
// }
//
// } else if(valueHDG[0] > rwyHDG && value[0] > 0) {
// if(ctrl1[2] > -0.5f){
// xpc.sendCTRL(yawLeft); // YAW LEFT
// }
// }
// }
//
//
// if(cruise) {
// //Basic Autopilot For Roll (based on bank angle)
// float[] rollRight = {-998.0f, ctrl1[1] + 0.01f};
// float[] rollLeft = {-998.0f, ctrl1[1] - 0.01f};
// if(value2[0] < 0) {
//
// if(ctrl1[1] < 0.15f) {
// xpc.sendCTRL(rollRight);
// }
//
// } else if(value2[0] > 0) {
// if(ctrl1[1] > -0.15f) {
// xpc.sendCTRL(rollLeft);
// }
// }
//
// //Basic Autopilot For Pitch (based on speed)
// float[] pitchUp = {ctrl1[0] + 0.01f};
// float[] pitchDown = {ctrl1[0]- 0.01f};
//
// if(value[0] > bugged+25) {
// if(ctrl1[0] < 0.2f) {
// xpc.sendCTRL(pitchUp);
// }
// } else if(value[0] < bugged+25) {
// if(ctrl1[0] > -0.2f) {
// xpc.sendCTRL(pitchDown);
// }
// }
//
// }
//
// try {
// Thread.sleep(0);
// }
// catch (InterruptedException ex) {}
//
// if (System.in.available() > 0) {
// break;
// }
// }
//
// // System.out.println("Setting controls");
// // float[] ctrl = new float[4];
// // ctrl[3] = 0.8F;
// // xpc.sendCTRL(ctrl);
//
// // System.out.println("Pausing sim");
// // xpc.pauseSim(true);
// // try { Thread.sleep(5000); } catch (InterruptedException ex) {}
// // System.out.println("Un-pausing");
// // xpc.pauseSim(false);
//
// System.out.println("Example complete");
//
// }
// catch (SocketException ex)
// {
// System.out.println("Unable to set up the connection. (Error message was '" + ex.getMessage() + "'.)");
// }
// catch (IOException ex)
// {
// System.out.println("Something went wrong with one of the commands. (Error message was '" + ex.getMessage() + "'.)");
// frame.dispose();
//
// }
// System.out.println("Exiting");
// }
//
//
// //Helper Methods
// // public static void logData (BufferedWriter bw, String log) {
// // bw.write(log);
// // }
//}
//
//class axis extends JComponent {
//
// int xBound = 0;
// int yBound = 0;
//
// axis(int currentX, int currentY) {
// xBound = currentX;
// yBound = currentY;
// }
//
// public void paint(Graphics g)
// {
// Graphics2D g2 = (Graphics2D) g;
// g2.setColor(Color.green);
// g2.drawLine(xBound/2, 0, xBound/2, yBound);
// g2.drawLine(0, yBound/2, xBound, yBound/2);
// }
//
// public void setXBound(int newX){
// this.xBound = newX;
// }
//
// public void setYBound(int newY){
// this.yBound = newY;
// }
//}
//
//
//
//// class yaw extends JComponent {
//
//// int xBound;
//// int yBound;
//// float x = 0;
//
//
//// int currX = (int)(x*xBound) + xBound/2;
//
//// yaw(int currentX, int currentY) {
//// xBound = currentX;
//// yBound = currentY;
//// }
//
//// public void paint(Graphics g)
//// {
//// Graphics2D g2 = (Graphics2D) g;
//// g2.setColor(Color.blue);
//// g2.drawLine(currX, 0, currX, yBound);
//// g2.fillOval(currX, yBound/2, 20, 20);
//// }
//
//// public void setXBound(int newX){
//// this.xBound = newX;
//// }
//
//// public void setYBound(int newY){
//// this.yBound = newY;
//// }
//
//// public void setX(float newX){
//// this.x = newX;
//// }
//// }
//
//
//
//
//
//
//
//
//
//
//class yokePosition extends JComponent {
// float x = 0;
// int xBound = 0;
// float y = 0;
// int yBound = 0;
//
// int width = 50;
// int height = 50;
//
// yokePosition(int currentX, int currentY) {
// xBound = currentX;
// yBound = currentY;
// }
//
// yokePosition() {
//
// }
//
// public void paint(Graphics g)
// {
// Graphics2D g2 = (Graphics2D) g;
//
// try {
// final BufferedImage image = ImageIO.read(new File("/Users/flyingtopher/Desktop/Code Citadel/School/2. Research/Fork Clone/XPlaneConnectCSP/Java/Project_Models/Model-1/content/Yoke Symbol.png"));
// Image scaledImage = image.getScaledInstance(xBound, yBound, Image.SCALE_DEFAULT);
//
// g.drawImage(scaledImage, 0, 0, getFocusCycleRootAncestor());
// } catch (IOException e){
// System.out.print("Rudder Image Failed");
// }
//
// g2.setColor(Color.red);
// int currX = (int)(x*xBound) + xBound/2 - width/2;
// int currY = (int)(y*yBound) + yBound/2 - height/2;
// System.out.println("CurrX, CurrY: " + currX +", " + currY);
// // g2.drawOval(currX, currY, width, height);
//
// g2.fillOval(currX, currY, width, height);
// g.setColor(Color.green);
// int height = g.getFontMetrics().getHeight();
// g.drawString("Nose Down", (xBound/2) + 5, height);
// g.drawString("Nose Up", (xBound/2) + 5, yBound - height/2);
// g.drawString("Roll Left",0, yBound/2);
// int width = g.getFontMetrics().stringWidth("Roll Right");
// g.drawString("Roll Right", xBound - width, yBound/2);
//
//
//
//
// }
//
// public void setX(float newX){
// this.x = newX;
// }
//
// public void setXBound(int newX){
// this.xBound = newX;
// }
//
// public void setY(float newY){
// this.y = newY;
// }
// public void setYBound(int newY){
// this.yBound = newY;
// }
//}
//
//
//class rudderPosition extends JComponent {
//
// int xBound = 0;
// int yBound = 0;
//
// float rudderTravel = 0;
//
// rudderPosition(int currentXBound, int currentYBound) {
// xBound = currentXBound;
// yBound = currentYBound;
// }
//
// public void paint(Graphics g) {
// Graphics2D g2 = (Graphics2D) g;
// int spacer = 10;
// g.setColor(Color.gray);
// g2.fillRect(0, spacer, xBound, yBound - spacer);
//
// g2.setColor(Color.red);
// int width = (int) (xBound/2 * rudderTravel);
// //g2.drawRect(xBound/2, 0 +spacer, width, yBound);
// g2.fillRect(xBound/2, 0 + spacer, width, yBound);
//
// g.drawString("Yaw Left",0, yBound/2);
// int textWidth = g.getFontMetrics().stringWidth("Roll Right");
// g.drawString("Yaw Right", xBound - textWidth, yBound/2);
// try {
// final BufferedImage image = ImageIO.read(new File("/Users/flyingtopher/Desktop/Code Citadel/School/2. Research/Fork Clone/XPlaneConnectCSP/Java/Project_Models/Model-1/content/Rudder Pedals.png"));
// Image scaledImage = image.getScaledInstance(xBound, yBound, Image.SCALE_DEFAULT);
// g.drawImage(scaledImage, 0, 0, getFocusCycleRootAncestor());
// } catch (IOException e) {
// System.out.print("Rudder Image Failed");
// }
// }
//
// public void setX(float newX) {
// this.rudderTravel = newX;
// }
//
// public void setXBound(int newX) {
// this.xBound = newX;
// }
//
// public void setYBound(int newY) {
// this.yBound = newY;
// }
//
//}