kourdou59
Messages postés56Date d'inscriptionsamedi 4 novembre 2000StatutMembreDernière intervention 5 septembre 2005
-
18 août 2005 à 16:17
kourdou59
Messages postés56Date d'inscriptionsamedi 4 novembre 2000StatutMembreDernière intervention 5 septembre 2005
-
19 août 2005 à 14:34
Yo !
Je dois faire une appli qui lit des codes barres. Donc j'ai un lecteur code barre branché sur le port série. Quand je flashe un code, j'insère le code dans une JTable et je dois envoyer un message sur un afficheur à cristaux liquides branché avec le lecteur code barre.
Bref, tout ceci fonctionne grâce à un thread sur le port série... Le problème c'est qu'au bout de quelques ouvertures de fenêtres dans la barre de menu, l'affichage est ralenti. Si je flashe un code barre, ça reprend un rythme normal.
J'ai viré ma procédure d'envoi de message sur l'afficheur et tout a l'air de fonctionner correctement.
En fait, je voudrais savoir comment m'y prendre pour que l'envoi de message à l'afficheur ne perturbe pas mon appli... Un 2e thread peut être ? Oui mais comment,... j'ai jamais rien compris aux Threads...
dmaillet
Messages postés500Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention11 juillet 2007 19 août 2005 à 08:54
Regarde avec un profiler pourquoi ca ralenti, si c'est bien ce que tu
penses, alors oui, un 2 eme thread sera approprie ( de toute facon, un
deuxieme thread serait le bienvenue, que tu pourrais synchroniser afin
de notifier un nouveau scan. Fouille un peu sur Google, tu trouveras
plein d'exemple de thread... ou bien ici aussi...)
public class MonAppli {
public static void main(String [] args){
LectureCodeBarre lcb=new LectureCodeBarre();
lcb.start();
}
}
Voilà si quelqu'un a une idée pour claquer un 2e Thread...
kourdou59
Messages postés56Date d'inscriptionsamedi 4 novembre 2000StatutMembreDernière intervention 5 septembre 2005 19 août 2005 à 11:43
Désolé mais j'ai pas dû tout piger. Mon code qui envoie le message à l'afficheur, je le met où ? Je peux pas le mettre dans construct() car sinon je peux pas accéder à la variable globale fluxEcriture. Et c'est là que ça ralentit, quand je fais fluxEcriture.write(...);
Désolé, si je suis un boulet...
Vous n’avez pas trouvé la réponse que vous recherchez ?
kourdou59
Messages postés56Date d'inscriptionsamedi 4 novembre 2000StatutMembreDernière intervention 5 septembre 2005 19 août 2005 à 12:56
Autant pour moi, lol, il prend les variables de la classe (j'avais claqué un this devant dc normal). Par contre, pour le paramètre "message", là ça passait pas, il me mettait comm erreur : "local variable message is accessed from within inner clas; needs to be declared final." donc je l'ai mis en variable de classe que je réinitialise à l'entrée de envoiMessageAfficheur.
Donc maintenant, tout compile. Par contre à l'exécution, j'ai eu un message sur IllegalThreadStateException... Donc j'ai encadré le start() du SwingWorker par un try ... catch(IllegalThreadStateException). Pareil pour le start de LectureCodeBarre. Et en fait,à l'exécution, il va toujours dans le catch et le message de l'erreur est "null"
kourdou59
Messages postés56Date d'inscriptionsamedi 4 novembre 2000StatutMembreDernière intervention 5 septembre 2005 19 août 2005 à 13:49
Ok merci pour le final. J'ai viré mes try... catch (IllegalThreadStateException e)...
A l'execution de l'appli, j'ai le message suivant :
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Native Method)
// ....
et rien dans ma fenêtre graphique.
Donc j'avais claqué le try catch au start de LectureCodeBarre et au start dans envoiMessageAfficheur pour que l'appli s'exécute mais ça passe tjs par le catch