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

*   JINI Projektarbeit *** Sommersemester 2001         

*   Thema:        Simulation eines Foerderbandes       

*                  in Java/Jini                                                                                 

*                                                       

*   Datei:          Foerderbandsteuerung.java          

*   Datum:          11.06.2001                         

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

 

import net.jini.core.discovery.LookupLocator;

import net.jini.core.lookup.*;

import java.rmi.RMISecurityManager;

import java.awt.*;

import java.io.*;

import java.net.*;

import java.util.*;

import java.util.Vector;

 

/**

 * Die Klasse Foerderbandsteuerung ruft controlMotor() beim LookupService auf

 *

 *

 * @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 Foerderbandsteuerung extends Object {

           

           

 

  public Foerderbandsteuerung() {

  }

 

 

 

  /** Initialisierung des Securitymanagers

 */

 

  public static void main (String args[]) throws Exception{

    System.out.println ("Initialisierung...");

    System.setSecurityManager( new RMISecurityManager() );

 

 

   

   /** Initialisierung des LUS ( hier muss der aktuelle Hostname eingetragen werden )

 */  

  

    LookupLocator locator = new LookupLocator("jini://UNIMATRIX001");

  

    ServiceRegistrar sr = locator.getRegistrar();

   

    Class[] classes = new Class[] { JiniInterface.class };

    ServiceTemplate st = new ServiceTemplate( null, // ID

            classes, // types

            null);  // attributes

   

   

      /**Definition des Interface, dass im LUS regestriert wurde

      */

  

    JiniInterface Foerderband=(JiniInterface)sr.lookup(st);

   

   

      /**Definition eines Vektors mit der Groesse 2

   */

  

    Vector v = new Vector(2);

    v.setSize(2);

    int i=0;

 

 

   /** Initialiesirung der Richtungsvariablen ( links steht fuer Linkslauf, rechts fuer Rechtslauf )

   */

  

    String x="links";

      

   

   

    while(i<10){ // Initialisierung einer while-Schleife, die Bestimmt, wieviele Zeitmessungen vorgenommen werden

    i++;                 

    v=Foerderband.controlMotor(x);

    /* Aufruf der Methode controlMotor() auf dem Server. Der Methode wird die Laufrichtung als Integer

    uebergeben, diese gibt anschliessend die neue Endposition und die Laufzeit ueber das Netz, in Form

    eines Vektors zurueck*/

    String variable = (String)v.get(1);

    /* Konvertierung des Vektorelements, dass die Endposition enthaelt, von einem Objekt zurueck in einen String*/

    if(variable.equals("rechte Endposition erreicht"))

    /* if Schleife zur Bestimmung der neuen Laufrichtung.

    Falls die rechte Endposition erreicht wird, wird die Laufrichtung auf 1 respektive "Linkslauf"

    gesetzt und entsprechend andersherum, bei Erreichen der linken Endposition*/

            x="links";

    else

            x="rechts";

           

            if(i==1){

            System.out.println ("Messung gestartet...");

            }

            else{               

    System.out.println ("Position: " + v.elementAt(1)); // Ausgabe der aktuellen Endposition

    System.out.println ("Laufzeit: " + v.elementAt(0) + " ms"); // Ausgabe der aktuellen Netzlaufzeit

    }

   } 

  }

 

}