Ajouter un commentaire

fredericmazue

D'abord, pardonne moi, mais je ne peux pas m'empêcher de le dire, ¤¤¤¤ Java n'est certainement pas le langage le miuex adapté à ce que tu veux faire.

Quote:
les valeurs '49' (in.read(); ) et '2' (int b)

Où ça 49 ?
Pour le deux c'est tout simple, quand tu écris
int b = in.read();

Tu oublies que tu as auparavant décoré le InputStream retourné par serialPort.getInputStream() par un InputStreamReader qui lit des caractères... avec l'encodage par défaut qui en Java est l'Unicode à la sauce Java dans lequel tout les caractères sont encodés sur deux octets. Donc quand tu lis une fois (read()) tu ne lis pas un seul octet sur le port comme, je pense, tu croyais le faire, mais deux. Et du coup, dans le int, il n'y a peut être pas la valeur à laquelle tu t'attends
Evidemment ça ne pas pas aller pour restituer le code barre. Quand je te disais que Java n'est pas un langage qui va bien. :evil:

Pour rémédier au problème, soit tu changes le charset du InputStreamReader, soit tu utilises directement le InputStream retourné par l'API.

Tout ceci soit dit en considérant que le port série est convenablement configuré bien sûr. Si ce n'est pas la cas, tu peut avoir aussi (et en plus) des lectures erratiques. Mais bon ça c'est éventuellement un autre problème. Partons du principe que le port est bien configuré :)

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 DDD   V     V  L     X   X   SSS  
D D V V L X X S
D D V V L X SSS
D D V V L X X S
DDD V LLLL X X SSSS