JAVAX.COMM - charactères manquants - problème persistant
Bonjour à Tous !
Je suis sous WINDOWS et j communique avec un module GPS en port série (virtualisé par un port USB) pour télécharger des coordonnées GPS.
à la réception d'une grande qté de donnée à 115200Bauds, je remarque qu'il ya des charactères qui manquent Exemple, je dois recevoir 10000 lignes identiques avec un id incrémental, remarquez qu'il coupe la ligne 452 et passe à 469 d'où une ligne illisible et 17lignes manquantes :
Code:
1 2 3 4 5
| 450;2;44.456789;1.345678;0.345;2010;04;10;11;03
451;2;44.456789;1.345678;0.345;2010;04;10;11;03
452;2;44.456789;1.356789;1.345678;0.345;2010;04;10;11;03
469;2;44.456789;1.345678;0.345;2010;04;10;11;03
470;2;44.456789;1.345678;0.345;2010;04;10;11;03 |
Il n'y a pas de règle, les erreurs arrivent de façon aléatoire.
Remarque: je gère la réception octet par octet (à l'ancienne) :
> Est-ce la vitesse trop évelvée ? (115200Bps)
> Est-ce mon code qui déconne ?
> Est-ce le driver
> Est-ce cette API ? (il y a une alternative: RXTX)
Code:
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
| // Evènement(de l'API) déclenché à la récepetion de donnée
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBufferLine = new byte[100];
try { int numLigne = 0;
int Byte = 0;
long totalBytes = 0;
int lineSize = 0;
String ligne = "riendans;laligne";
byte[] tempByte = new byte[1];
do {
Byte = inputStream.read(); // je lis 1 octet
//je dédecte les caractères: imprimables ou \n ou -1
if((Byte != -1)&& (((Byte>=0x20) && (Byte<=0x7E))||(Byte == '\n')))
{ totalBytes++;
// je l'ajoute à ma ligne
readBufferLine[lineSize] = (byte)numBytes;
lineSize++;
if((numBytes=='\n')||(numBytes=='>'))
{
readBufferLine[lineSize]='\0';
ligne = new String(readBufferLine,0,lineSize);
numLigne++;
system.out.println(ligne);
lineSize = 0;
}
}//si '>' c'est une fin d'une ligne également
}while ((Byte !=-1)&&(totalBytes<5000000)&&(numBytes!='>')) ; |
>> Voilà mnt 7 jours de perdus dans mon PFE sur ce problème. Mon encadrant commence à s'agacer.. à l'aiiide ! :calim2:
Merci^^