Go Down

Topic: enregistrer string en eeprom [Résolu] (Read 1 time) previous topic - next topic

infobarquee

Jan 28, 2013, 01:15 pm Last Edit: Jan 28, 2013, 07:58 pm by infobarquee Reason: 1
bonjour tout le monde,
encore sur un projet un peu fou comme dab.
je cherche a enregistrer un String en eeprom.
eepromwriteanything ne donne rien
le type de string est : +3366666666 évidemment un numéro de téléphone :)

je récupère bien dans un void le numéro, mais impossible de le retourner et l'écrire en eeprom.
ca fait quelques heures que je potasse la dessus et la boite d'efferalgan en prend un coup ainsi que le paquet de clopes :(

le processus est le suivant
envoie d'un code sur le gprs=> pas de pb
traitement du numéro émetteur=>pas de pb
réaffichage du numero=>pas de pb
et la suite gros pb

merci d'avance

Artouste



le type de string est : +3366666666 évidemment un numéro de téléphone :)


Bonjour Infobarquee
Je ne pouvais pas ne pas la faire ! meme si je sais que ce n'est pas ça qui va t'aider là !  :smiley-mr-green:
Mais c'est quand même l'enfer le N° du string   :D  ---> []

infobarquee

:smiley-mr-green: un peu tiré sur la ficelle ........... du string je sais, même pas fait exprès en plus.
j'oubliais version 1.0 ide

B@tto

Pourquoi ne pas simplement coder chaque caractère en ASCII ?
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

infobarquee

parce que le numéro est recu dans un String au départ.
donc encoder pour décoder après......galère

Pac2Kro

L'EEPROM est un array de bytes, donc pour y stocker une variable String, il faut transformer.

B@tto

Oué mais un string c'est un array de byte, l'encodage décodage est plutôt limité ! A vrai dire je vois pas pourquoi ça te génerait
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

infobarquee

#7
Jan 28, 2013, 07:57 pm Last Edit: Jan 28, 2013, 07:59 pm by infobarquee Reason: 1
bon je viens de trouver la parade
je lis le string caractère par caractère et inscrit chaque caractère sur une position de l'eeprom ;)
je vous le donne, mais il doit y avoir une autre méthode.
Quote

char caractere[20];

   for (int ii = 0; ii < 20; ii++) {
     caractere[ii] = numero[ii];
     EEPROM.write(ii, caractere[ii]);
     Serial.print(caractere[ii]);


après pour reformer le tout, dans le setup
Quote

String numero2 ="";
char numero[20];

//setup
    Serial.println("lecture eeprom");
       for (int ii = 0; ii < 13; ii++) {
     numero[ii] = EEPROM.read(ii);

     Serial.print(numero[ii]);
     numero2 = numero2 +numero[ii];
   }


PS pour Artouste : le mode démoniaque vient de frapper  ]:D

fdufnews

#8
Jan 28, 2013, 08:11 pm Last Edit: Jan 28, 2013, 08:22 pm by fdufnews Reason: 1
Quote
Oué mais un string c'est un array de byte,

Ne pas confondre String et string.

@infobarquee:
As-tu essayé d'utiliser la méthode toCharArray() pour passer la chaine à ta fonction d'écriture en eeprom.

Edit:
et encore je ne suis pas sur que ça marche car eepromwriteanything utilise un sizeof pour déterminer le nombre de données à écrire. Donc il faut que la taille du tableau soit connue au moment de la compilation.

infobarquee

oui testé, mais ca merdouille sur ide1.0
pour eepromwriteanything idem
mais un bête toto.lenght() renvoie la taille.

skywodd

Bonjour,

À noter qu'un numéro de téléphone à une taille maximum connu.
L'utilisation d'une string est totalement inutile du coup (et dangereuse -> allocation dynamique), un simple char[11] suffit.

Faire un char[20] pour stocker temporairement 1 char avant de la mettre dans une string ... c'est moche, très moche ...
Au pire :
Code: [Select]
for (int i = 0; i < 20; ++i) {
      char c = numero[i];
      EEPROM.write(i, c);
      Serial.print(c);
}
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

infobarquee

moche oui, mais c'est la seule solution que j'ai pu trouver.
sinon, le numéro n'est pas de 11 mais 12 caractères ;)
et via un mobile il y a un + devant
+33 6 66 66 66 66

Go Up