Projet Darts  0.2
BTS SNIR LaSalle Avignon 2020
TReception.java
Aller à la documentation de ce fichier.
1 package projet.lasalle84.darts;
2 
3 import android.os.Bundle;
4 import android.os.Handler;
5 import android.os.Message;
6 import android.util.Log;
7 
8 import java.io.BufferedReader;
9 import java.io.IOException;
10 import java.io.InputStream;
11 import java.io.InputStreamReader;
22 class TReception extends Thread
23 {
27  private final String TAG = "TReception";
28 
31  private Peripherique peripherique; // Peripherique à écouter
32  private Handler handler;
33  private boolean estFini;
34  private InputStream receiveStream;
35 
43  TReception(Peripherique peripherique, Handler handler, InputStream flux)
44  {
45  Log.d(TAG,"TReception() " + peripherique.getNom() + "[" + peripherique.getAdresse() + "]");
46  this.peripherique = peripherique;
47  this.handler = handler;
48  estFini = false;
49  receiveStream = flux;
50  }
51 
56  @Override
57  public void run()
58  {
59  Log.d(TAG,"début run() " + peripherique.getNom() + "[" + peripherique.getAdresse() + "]");
60  BufferedReader reception = new BufferedReader(new InputStreamReader(receiveStream));
61  while(!estFini)
62  {
63  try
64  {
65  String trame = "";
66  if(reception.ready())
67  {
68  trame = reception.readLine();
69  }
70  if(trame.length() > 0)
71  {
72  Log.d(TAG, "run() trame reçue : " + trame);
73  Message msg = Message.obtain();
74  Bundle b = new Bundle();
75  b.putString("nom", peripherique.getNom());
76  b.putString("adresse", peripherique.getAdresse());
77  b.putInt("etat", Peripherique.CODE_RECEPTION);
78  b.putString("donnees", trame);
79  msg.setData(b);
80  handler.sendMessage(msg);
81  }
82  }
83  catch (IOException e)
84  {
85  e.printStackTrace();
86  Log.d(TAG, "run() Erreur socket read : " + peripherique.getNom());
87  Message msg = Message.obtain();
88  Bundle b = new Bundle();
89  b.putString("nom", peripherique.getNom());
90  b.putString("adresse", peripherique.getAdresse());
91  b.putInt("etat", Peripherique.CODE_ERREUR_RECEVOIR);
92  msg.setData(b);
93  handler.sendMessage(msg);
94  }
95  try
96  {
97  Thread.sleep(250);
98  }
99  catch (InterruptedException e)
100  {
101  e.printStackTrace();
102  }
103  }
104  Message msg = Message.obtain();
105  Bundle b = new Bundle();
106  b.putString("nom", peripherique.getNom());
107  b.putString("adresse", peripherique.getAdresse());
108  b.putInt("etat", Peripherique.CODE_DECONNEXION);
109  b.putString("donnees", "");
110  msg.setData(b);
111  handler.sendMessage(msg);
112  Log.d(TAG,"fin run() " + peripherique.getNom() + "[" + peripherique.getAdresse() + "]");
113  }
114 
119  public void arreter()
120  {
121  Log.d(TAG,"arreter() " + peripherique.getNom() + "[" + peripherique.getAdresse() + "]");
122  if(!estFini)
123  {
124  estFini = true;
125  }
126  try
127  {
128  Thread.sleep(250);
129  }
130  catch (InterruptedException e)
131  {
132  e.printStackTrace();
133  }
134  }
135 }