Bonjour ,

J'ai un problème :
Je communique avec une carte électronique par Bluetooth , je lui envoie des commandes en chaine de caractère ascii puis la carte me réponds de la même manière .
J'envoie donc une commande pour récupérer des données , ça fonctionne très bien pour la premiere commande qui ne renvoie que 12ko de données .
Mais pas pour la seconde qui en renvoie beaucoup plus :
Au bout d'environ 35 000/39 000 caractères mon application ne reçoit plus de données , je continue de lire le bufferedReader mais cela fait comme s'il était vide , alors que la carte électronique continue bien d'envoyer des données ...

Je n'ai aucune exception levée ...

Voici la méthode qui me permet de récupérer les données envoyée par la carte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
	@Override
	public void run() {
		while (run) {	
			try {
				char caractere = '0';
				//StringBuilder sb = new StringBuilder();
				//String caracs = "";
				Log.d("dbg","1");
				while ((caractere = (char) bufferedReader.read()) != -1) {
					Log.d("dbg","2");
					if (caractere == '\n' || caractere == '\r')
					{
						Log.d("Recu",messagePart);
						continue;
					}
					if (caractere != ']') {
						message += caractere;
						messagePart += caractere;
					}
 
 
					if (caractere == '>') {
						messagePart = messagePart.trim();
						if (!messagePart.contains("<ER>") && !messagePart.contains("<commande hydraulique. ('CTRL+C' ou 'C' pour arreter, 'S' pour status)>")) {
							//Log.d("socket sent", "Partie de message reçue : "	+ messagePart);
							Message m = new Message();
							Bundle b = new Bundle();
							b.putInt("type", 0);
							b.putString("recu", messagePart);
							if(!commandes.isEmpty())
							{
								b.putString("commande", commandes.getFirst());
							}
							else
							{
								b.putString("commande","");
							}
							m.setData(b);
 
							handlerThreadUI.sendMessage(m);
						}
						messagePart = "";
					}
					if (caractere == ']')
					{
						message = message.trim();
						if (message.equals("<ER>")) 
						{
							if(!commandes.isEmpty())
							{
								String commande = commandes.getFirst();
									_send(commande);
							}
						} else if(message.contains("<commande hydraulique. ('CTRL+C' ou 'C' pour arreter, 'S' pour status)>"))
						{
							Log.d("socket","j'ai recu <commande hydraulique...> je l'ignore");
						} else {
								//Log.d("socket sent", "Message reçu : " + message);
 
								Message m = new Message();
								Bundle b = new Bundle();
								b.putInt("type", 1);
								if(!commandes.isEmpty())
								{
									b.putString("commande", commandes.getFirst());
								}
								else
								{
									b.putString("commande","");
								}
								b.putString("recu", message);
								m.setData(b);
								handlerThreadUI.sendMessage(m);
							}
						message = "";
					}
				}
				Thread.sleep(10);
			} catch (InterruptedException e) {
				Log.e("InterruptedException", e.toString());
			} catch (IndexOutOfBoundsException e) {
				Log.e("IndexOutOfBoundsException",e.toString());
			} catch (IOException e) {
				Log.e("MyIOException", e.toString());
				try {
					socket.connect();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					Log.e("IOException",e1.toString());  
				}	
			}
 
		}
	}
EDIT : et voici l'initialisation de mon bufferedReader :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));