Oui j'envois un message et je reçois une réponse. Le problème là, c'est que avec les sleeps c'est trop aléatoire, en plus selon le nombre de requêtes que j'ai a effectuer il faudrait que le sleep soit de longueur différente, donc c'est pas trop gérable proprement.
Avec les join() aussi ça ne marche pas.
En gros voici le topo:
1 Thread emetteur
1 Thread recepteur
Le programme principal.
L'idée ici c'est que l'emetteur, qui envoit les requêtes à l'appareil, va creer autant de thread qu'il y a de requêtes:
public void run() {
Ecouteur thread2 = new Ecouteur(idIns, pouet(), idMethode, chemin_Portserie, pContext,connex);
//Ce thread sert juste pour l'initialisation
Initi thread3 = new Initi(retBuff(), idMethode, chemin_Portserie, pContext,connex);
try {
//On lance l'init
thread3.start();
communique("B" );
sleep(3000);
communique("B" );
//Et tant que l'init est pas finie on reste dedans grace au join()
thread3.join();
for (int i = 201 ; i <= 210 ; i++ ) {
communique("A" + i );
new Thread(thread2).start();
thread2.join();
}
thread2.start();
communique("A210" );
thread2.join();
communique("Z" );
close();
} catch (InterruptedException e) {
}
}
Genre là dans la boucle, l'idée est de récuperer plusieurs fois AXXX, XXX correspond à un numéro, et l'appareil doit renvoyer des résultats. Le problème c'est que la machine est connectée en 1200 bauds et que il faut lui laisser le temps de répondre. Avec les join() même problème, des fois ça insère parfaitement les 10 résultats au final, mais en bidouillant avec des sleeps et autres... Impossible de faire ça proprement et de façon sûre (qui marche à chaque fois).
Message édité par dukable le 17-06-2008 à 09:38:33