Advertisement
Guest User

Untitled

a guest
Jun 13th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.48 KB | None | 0 0
  1. // Implementazione del thread Sensor, che ha il
  2. // compito di misurare i parametri ambientali
  3.  
  4. public class Sensor extends Thread {
  5.    
  6.     // attributo per la condivisione dell'oggetto Cloud
  7.     private Cloud           myCloud;
  8.    
  9.     // attributo per la condivisione dell'oggetto Environment
  10.     private Environment     myEnvironment;
  11.    
  12.     // attributo contenente i parametri misurati dal sensore
  13.     private double          parametriLetti[];
  14.    
  15.     // generatore di numeri casuali
  16.     private Random          rnd;
  17.     // percentuale errore di lettura
  18.     private int             erroreLettura;
  19.    
  20.    
  21.     // costruttore classe Sensor
  22.     public Sensor(String name, Cloud c, Environment e){
  23.        
  24.         super(name);
  25.         this.myCloud        = c;
  26.         this.myEnvironment  = e;
  27.         this.rnd            = new Random();
  28.        
  29.         // inizializzo l'errore di lettura
  30.         // nell'intervallo [-10,10]
  31.         this.erroreLettura  = this.rnd.nextInt(21) - 10;
  32.        
  33.         // parametriLetti è un array di due posizioni, per contenere
  34.         // il valore di luminosità e temperatura misurati
  35.         this.parametriLetti = new double[2];
  36.     } // end costruttore
  37.    
  38.     // implemento il comportamento del thread
  39.     @Override
  40.     public void run(){
  41.         boolean isAlive    = true;
  42.        
  43.         System.out.println("["+super.getName() +"] --> Ho iniziato l'esecuzione.");
  44.        
  45.         while(isAlive){
  46.             try{
  47.                 // misuro i parametri ambientali
  48.                 parametriLetti     = this.myEnvironment.measureParameters(this);
  49.                
  50.                 // applico l'errore percentuale alla temperatura in posizione 0
  51.                 parametriLetti[0] += (parametriLetti[0] * erroreLettura) / 100;
  52.                
  53.                 // applico l'errore percentuale alla luminosità in posizione 1
  54.                 parametriLetti[1] += (parametriLetti[1] * erroreLettura) / 100;
  55.                
  56.                 // invio i dati in Cloud
  57.                 this.myCloud.writeData(this, parametriLetti);
  58.                
  59.                 // attendo 400 millisecondi
  60.                 Thread.sleep(400);
  61.             } catch(InterruptedException ex){
  62.                 System.out.println("Interrupt! --> " + ex);
  63.                 isAlive = false;
  64.             }
  65.         } // end while
  66.         System.out.println("["+super.getName() +"] --> Ho terminato l'esecuzione.");
  67.     } // end metodo run()
  68. } // end class Sensor
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement