/********************************************************

*   JINI Projektarbeit *** Sommersemester 2001         

*   Thema:        Simulation eines Foerderbandes       

*                      in Java/Jini                                                                                 

*                                                      

*   Datei:          Motorsteurung.java                 

*   Datum:        11.06.2001                         

*********************************************************/

import java.rmi.*;

import java.rmi.server.*;

import java.awt.*;

import java.io.*;

import java.net.*;

import java.util.*;

/**

 * Von der Klasse Motorsteuerung muessen die stubs und skeletons erzeugt werden

 * Sie beinhaltet die Methode controlMotor(), die vom Client ( Motorsteuerung ) aufgerufen wird

 *

 *

 * @author  S. Pollmann, O. Stradner, M. Thielicke, R. Begemann

 * @version Java 1.3, JINI 1.1

 * @see     Foerderband

 * @see     Foerderbandsteuerung

 * @see     JiniInterface

 * @see     Motorsteuerung

 */

public class Motorsteuerung extends UnicastRemoteObject

     implements JiniInterface  {

 

  public Motorsteuerung() throws RemoteException{

    super();

  }

 

String position; // String-Variabel, die die aktuelle Endposition beinhaltet

double a;  // Systemzeit vor dem erstenAufruf

double b =0;  // Systemzeit nach dem letzten Aufruf

public Vector controlMotor(String x) throws RemoteException {

   

System.out.println(x);

a=System.currentTimeMillis();

            double t;          // Zeitdifferenz

            if(x.equals("links"))       // if-Bedingung zum setzen der Endposition

                        {

                        position="linke Endposition erreicht";  // Setzen der neuen Endposition

                        try {

        Thread.sleep(5000);        //Simulierte Laufzeit des Foerderbandes von 5 Sekunden

                        }

      catch (InterruptedException ex) {

        System.out.println("Fehler beim sleep");

                        }

                        }

            else if(x.equals("rechts"))

                        {

                        position="rechte Endposition erreicht";             // Setzen der neuen Endposition

                        try {

        Thread.sleep(5000);                    //Simulierte Laufzeit des Foerderbandes von 5 Sekunden

                        }

       catch (InterruptedException ex) {

        System.out.println("Fehler beim sleep");

                        }

                        }

           

            t=a-b;                         

            b=System.currentTimeMillis();

            Vector v=new Vector(2);                    // Erzeugen eines neuen Vektors der Groesse 2

            v.setSize(2);

            v.set(0, new Double(t));           // Schreiben der Zeit Differenz in den Vektor

    v.set(1, position);                             // Schreiben der Endposition in den Vektor

           

return v;                                                                      // Rueckgabe des Vektors

  } 

}