Bonjour,
Je cherche a réaliser un projet et j'ai besoin d'un thread, mais je n'arrive pas à le coder.
Mon projet utilise un module Arduino qui pilote une machine éjectant des pièces. Le module Arduino est relié à mon PC par le réseau et je souhaite que mon IHM (programme Java tournant sur le PC) affiche le nombre de pièces restantes.
Jusque là, tout fonctionne; J'ai posé un bouton sur mon prog java et lorsque je clique dessus, une commande est envoyée au module arduino qui me répond en me transmettant le nombre de pièces, lequel s'affiche bien sur l'IHM.
Je voulais donc terminer mon projet en utilisant deux boutons:
- Le 1er qui me lancerait un thread qui réaliserait en boucle les opérations d'interrogation du module et d'affichage des quantités de pièces
- Le deuxième qui me permettrait de stopper (ou détruire) le thread.
Je n'arrive à rien, l'IHM se fige et le programme est complètement bloqué.Quelqu'un a-t-il une idée ?
Je souhaitais utiliser un thread car il me semble que c'est la meilleure solution, mais je suis prêt à changer si quelqu'un me propose quelque chose qui fonctionne!
Voici un extrait du code chargé de démarrer le thread:
...Et voici le code de mon thread:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void jButton3MouseClicked(java.awt.event.MouseEvent evt) { { T = new ThreadLecturePieces(this.ServerHostName,this.ServerPort); T.run(); } private void jButton4MouseClicked(java.awt.event.MouseEvent evt) { { T.cancel(); }
Je remercie par avances les ames charitables qui voudraient bien se pencher sur mon problème, ça fait 3 jours que je galère avec ce $@* de projet qui doit être prêt pour jeudi... Je n'en dors plus de la nuit
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 public class ThreadLecturePieces implements Runnable { public String ServerHostName=""; public String ServerPort=""; public boolean Etat; ThreadLecturePieces(String Host, String Port) // constructeur { this.ServerHostName=Host; this.ServerPort=Port; } @Override public void run() { this.Etat=true; while(this.Etat) { try { AcquerirNombreDePieces(); Thread.sleep(5000); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); break; // Sortie de la boucle infinie } } } public void cancel() // Pour stopper le thread { this.Etat = false; } protected void AcquerirNombreDePieces() { .... }![]()
Partager