Processing: reconnaître le contenu d'un string

bonjour à tous

je me permet de vous solliciter car j'ai un petit soucis avec un prg sous processing.

je reçois des données série venant de plusieurs appareil donc je ne peux par forcement corrigé les erreur de transmition.

J'utilise un filtre qui me permet de trier les données:

String xString2 = myPort2.readStringUntil('\n');  // lecture série jusqu'au saut de ligne
    if (xString2 != null)  // si la chaîne n'est pas vide 
    {
      
      xString2 = trim(xString2);  // on vire les éventuels espace devant et derrière au cas où...

      int in = xString2.indexOf("PTEC");
      if (in==0)
      {PTEC=xString2.substring(in+5,in+9);}
      
      in = xString2.indexOf("DEMAIN");
      if (in==0)
      {DEMAIN=xString2.substring(in+7,in+11);}
      
      in = xString2.indexOf("ISOUSC");
      if (in==0)
      {ISOUSC=int(xString2.substring(in+7,in+9));}
      
      in = xString2.indexOf("IINST");
      if (in==0)
      {IINST=int(xString2.substring(in+6,in+9));}
      
      in = xString2.indexOf("PAPP");
      if (in==0)
      {PAPP=int(xString2.substring(in+5,in+10));}
      
      in = xString2.indexOf("BBRHCJB");
      if (in==0)
      {BBRHCJB=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("BBRHCJW");
      if (in==0)
      {BBRHCJW=int(xString2.substring(in+8,in+17));}
      
       in = xString2.indexOf("BBRHCJR");
      if (in==0)
      {BBRHCJR=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("BBRHPJB");
      if (in==0)
      { BBRHPJB=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("BBRHPJW");
      if (in==0)
      {BBRHPJW=int(xString2.substring(in+8,in+17));}
      
       in = xString2.indexOf("BBRHPJR");
      if (in==0)
      {BBRHPJR=int(xString2.substring(in+8,in+17));}
      
      in = xString2.indexOf("IMAX");
      if (in==0)
      {IMAX=int(xString2.substring(in+5,in+8));}
    }

mon soucis est le suivant, comme je connais le contenu de ce que je cherche, je stock en STRING certaine donnée, et d'autre en INT. mais quand l'appareil qui envoie bug et envoie une lettre à un endroit ou je n'attend que des chiffres, processing plante avec une jolie erreur null point exception.

Résultat arduino planté et plus de chauffage dans la maison.

Alors je voudrais savoir s'il est possible, avant d'utiliser certaine donnée "d'analyser" ce qui arrive de maniére a ce que:

si (donnée reçus==chiffres seulement)
  {utilisé les données;}

sinon {jeté les données reçus}

merci d'avance

flo

Regarde du coté de la fonction match(), éventuellement avec une regexp.

Tu reçois tes strings tels quels, ou est ce que tu reçois des char que tu formates ensuite en string ?

heu....
les données arrive sur le port série, mise en string juste aprés ou int selon le type de données reçus

C'est coté Arduino ou coté Processing que tu as un soucis ?

Si tu reçois tes "caractères" un a un, tu peux les comparer à 0-1-2-3...etc et si a 9 il n'y a pas eu de concordance.... c'est que ce n'est pas un chiffre ;D

je suis uniquement sur le processing, l'arduino n'est pas utilisé pour le moment.

Peut être une solution ici :

Est ce que c'est toujours les mêmes caractères qui viennent polluer ta string ?

En utilisant splitToken():

String[] inString = splitTokens(inStringTest, "0123456789"); // sépare la string à chaque chiffre  et le supprime de la string ...
if (inStringTest.length >0){  //  ou inStingTest.length() ... dans ce cas je ne sais pas lequel il faut ;-)
laisse tomber inString;
}
else {
utilise inString;
}

Après ton test, si le tableau inStringTest est vide, tu peux utiliser inString, car elle ne comporte que des chiffres.... si je me suis pas foutu dedans ;D

ba je vai essayer dés que j'aurai refabriquer un module edf, l'autre à eu chaud au patte

merci