Bonjour,
Je dois réaliser N appels successifs (par exemple 10) à un module connecté Wifi. Il s'agit d'envoyer une commande et à attendre le résultat dont le temps de réponse est indéterminé dans un intervalle de temps maximal.
J’ai donc créé une AsyncTask qui intègre une socket TCP client. Je déclenche une mesure par un événement bouton. Cà fonctionne.
Maintenant comment faire pour lancer N mesures à partir d’un bouton, en ne bloquant pas tout le système.
J’ai essayé d’attendre le status de l'AsyncTask FINISHED pour synchroniser la mesure suivante, mais ça bloque l’application.
Mon code (f_serie_10() est la fonction déclenchée par le bouton) :
Merci pour votre aide.
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 void f_serie_10() { int i,k=0; Tcp_com Tcp; Tcp = new Tcp_com(); for (i=1;i<=10;i++) { status.setText("Essai: " + i); if (cible_free) Tcp.execute("TEST_COM"); // lance mesure try {Thread.sleep(500);} catch (InterruptedException e) {}; // tempo 500 ms while (Tcp.getStatus() != AsyncTask.Status.FINISHED) { // attend réponse cible try { Thread.sleep(1000); } catch (InterruptedException e) { } k++; status.setText("Tempo: " + k); } text_score.setText("Tir: "+i+" "+srec); } }
Partager