Pages: [1]   Go Down
Author Topic: Processing: reconnaître le contenu d'un string  (Read 1109 times)
0 Members and 1 Guest are viewing this topic.
+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Code:

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:

Code:

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

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



merci d'avance

flo
« Last Edit: December 11, 2010, 07:06:31 am by FP24V » Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
« Last Edit: December 11, 2010, 07:38:19 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: December 11, 2010, 08:00:11 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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



Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Peut être une solution ici :

http://www.commentcamarche.net/forum/affich-5845316-java-suppression-lettres-dans-string

Est ce que c'est toujours les mêmes caractères qui viennent polluer ta string ?
« Last Edit: December 11, 2010, 10:21:26 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En utilisant splitToken():

Code:
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
« Last Edit: December 12, 2010, 12:19:05 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

+33 76500
Offline Offline
Jr. Member
**
Karma: 0
Posts: 75
Arduinaute du dimanche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


merci
Logged

Je ne conçois que trés peu, je recycle beaucoup les codes que je trouve.

Pages: [1]   Go Up
Jump to: