Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.47 KB | None | 0 0
  1. package MainMenu;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.DataOutputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.net.ServerSocket;
  9. import java.net.Socket;
  10. import java.util.ArrayList;
  11.  
  12. import lejos.hardware.Button;
  13. import lejos.hardware.ev3.LocalEV3;
  14. import lejos.hardware.motor.MindsensorsGlideWheelMRegulatedMotor;
  15. import lejos.hardware.port.MotorPort;
  16. import lejos.hardware.port.Port;
  17. import lejos.hardware.sensor.EV3ColorSensor;
  18. import lejos.hardware.sensor.EV3IRSensor;
  19. import lejos.hardware.sensor.EV3TouchSensor;
  20. import lejos.hardware.sensor.SensorModes;
  21. import lejos.robotics.RegulatedMotor;
  22. import lejos.robotics.SampleProvider;
  23. import lejos.robotics.subsumption.Arbitrator;
  24. import lejos.robotics.subsumption.Behavior;
  25. import lejos.utility.Delay;
  26.  
  27. public class Main {
  28.     public static final String[] VARINIMET = {"Red", "Gray", "Blue", "X"};
  29.    
  30.     public static ObjectInputStream OBJECTIN;
  31.     public static ObjectOutputStream OBJECTOUT;
  32.    
  33.     // Muuttujat Automodelle
  34.     public static boolean backToMenu = true;
  35.     public static boolean LAJITTELE;
  36.     public static boolean KALIBROI;
  37.     public static boolean STOP;
  38.     public static boolean EMSTOP;
  39.     public static Arbitrator arby;
  40.    
  41.     // Alustetaan sensorit ja moottorit
  42.     // Määritellään muuttujat  
  43.     public static final int KALIBROINTITARKKUUS = 10;
  44.  
  45.     private static ArrayList<int[]> kalibroidutVarit = new ArrayList<>();
  46.  
  47.     // Käynnistetään kosketusanturi
  48.     private static Port touchPort = LocalEV3.get().getPort("S3");
  49.     private static SensorModes touchSensor = new EV3TouchSensor(touchPort);
  50.     private static SampleProvider touch = ((EV3TouchSensor) touchSensor).getTouchMode();
  51.     private static float[] touchSample = new float[touch.sampleSize()];
  52.     private static EmStopBtn emStopBtn = new EmStopBtn(touch, touchSample);
  53.  
  54.     // Käynnistetään värianturi
  55.     private static Port portRGB = LocalEV3.get().getPort("S1");
  56.     private static SensorModes sensorRGB = new EV3ColorSensor(portRGB);
  57.     private static SampleProvider colorProvider = (((EV3ColorSensor) sensorRGB).getRGBMode());
  58.     private static float[] sample = new float[colorProvider.sampleSize()];
  59.  
  60.     // Käynnistetään moottori
  61.     private static RegulatedMotor mRanni = new MindsensorsGlideWheelMRegulatedMotor(MotorPort.C);
  62.     private static RegulatedMotor mJalusta = new MindsensorsGlideWheelMRegulatedMotor(MotorPort.B);
  63.  
  64.     public static void main(String[] args) throws Exception {
  65.        
  66.         System.out.println("Waiting for\nconnection...");
  67.        
  68.         ServerSocket serv1 = new ServerSocket(1111);
  69.         Socket s1 = serv1.accept(); //Odotetaan yhteyden muodostusta
  70.         DataInputStream in = new DataInputStream(s1.getInputStream());
  71.         OBJECTIN = new ObjectInputStream(in);
  72.        
  73.         ServerSocket serv2 = new ServerSocket(1112);
  74.         Socket s2 = serv2.accept(); //Odotetaan yhteyden muodostusta
  75.         DataOutputStream out = new DataOutputStream(s2.getOutputStream());
  76.         OBJECTOUT = new ObjectOutputStream(out);
  77.        
  78.         OBJECTOUT.writeObject("Connected to EV3");
  79.        
  80.         for(int i = 0; i < 3; i++) {
  81.             int[] iArr = (int[]) OBJECTIN.readObject();
  82.             kalibroidutVarit.add(i, iArr);
  83.         }
  84.         //Rännin väri
  85.         int a[] = { 36, 14, 8 };
  86.         kalibroidutVarit.add(3, a);
  87.        
  88.         // Asetetaan jalustan moottoreille haluttu nopeus
  89.         mJalusta.setSpeed(250);
  90.         mRanni.setSpeed(750);
  91.        
  92.         mainLoop();
  93.     }
  94.  
  95.     public static int[] kalibroi(int accuracy, SampleProvider colorProvider, float[] sample) {
  96.         // Muuttujat
  97.         int[] rgb = { 0, 0, 0 };
  98.  
  99.         // Lasketaan R-, G-, ja B-arvojen kertymä n-kertaa
  100.         for (int i = 0; i < accuracy; i++) {
  101.             colorProvider.fetchSample(sample, 0);
  102.             for (int j = 0; j < rgb.length; j++)
  103.                 rgb[j] += Math.round(sample[j] * 765);
  104.         }
  105.  
  106.         // Jaetaan kertymä n-kerralla. Saadaan jäsenien keskiarvo
  107.         for (int i = 0; i < rgb.length; i++)
  108.             rgb[i] = Math.round(rgb[i] / accuracy);
  109.  
  110.         // Palautetaan kolmiarvoinen int-tyyppinen lista
  111.         return rgb;
  112.     }
  113.    
  114.     public static void mainLoop() throws ClassNotFoundException, IOException {
  115.         System.out.println("Choose mode");
  116.        
  117.         while (true) {
  118.             String command = (String) OBJECTIN.readObject();
  119.             if(command.contains("Demo")) {
  120.                 // TODO: Virhetilojen havaitseminen sensoreissa ja moottoreille
  121.                 Behavior dB1 = new DemoColorSorting(mRanni, mJalusta, colorProvider, sample, kalibroidutVarit);
  122.                 Behavior dB2 = new EmStop(mRanni, mJalusta, emStopBtn);
  123.  
  124.                 Behavior[] demobArray = { dB1, dB2 };
  125.  
  126.                 // Looppaa käyttäytymisiä
  127.                 arby = new Arbitrator(demobArray);
  128.                 arby.go();
  129.             }else if(command.contains("Auto")) {
  130.                 /*// Testataan hätäseisnapin toimivuutta
  131.                 System.out.println("Press Em.STOP \n"
  132.                                     + "to continue.");
  133.                 while (!emStopBtn.painettuna());
  134.                 Delay.msDelay(1000);*/
  135.  
  136.                 Behavior aB1 = new AutoWaitForCommand();
  137.                 Behavior aB2 = new AutoCalibration(colorProvider, mRanni, sample, kalibroidutVarit, emStopBtn);
  138.                 Behavior aB3 = new AutoColorSorting(mRanni, mJalusta, colorProvider, sample, kalibroidutVarit);
  139.                 Behavior aB4 = new EmStop(mRanni, mJalusta, emStopBtn);
  140.  
  141.                 Behavior[] autobArray = { aB1, aB2, aB3, aB4 };
  142.  
  143.                 // Looppaa käyttäytymisiä
  144.                 arby = new Arbitrator(autobArray);
  145.                 arby.go();
  146.             }else if(command.contains("Manual")) {
  147.                 ManualSorter manual = new ManualSorter();
  148.                 manual.manualLoop(mRanni, mJalusta, kalibroidutVarit, colorProvider, sample);
  149.             }else if(command.contains("Exit")) {
  150.                 System.out.println("Program stopping");
  151.                 Delay.msDelay(2000);
  152.                 System.exit(1);
  153.             }
  154.         }
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement