Pages: [1]   Go Down
Author Topic: enregistrer string en eeprom [Résolu]  (Read 960 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

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 smiley-sad

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
« Last Edit: January 28, 2013, 01:58:46 pm by infobarquee » Logged

Offline Offline
Faraday Member
**
Karma: 33
Posts: 4978
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


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

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   smiley-grin  ---> []
Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 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
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3600
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pourquoi ne pas simplement coder chaque caractère en ASCII ?
Logged


Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Offline Offline
Full Member
***
Karma: 0
Posts: 154
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3600
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
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  smiley-twist
« Last Edit: January 28, 2013, 01:59:49 pm by infobarquee » Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3444
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: January 28, 2013, 02:22:33 pm by fdufnews » Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
for (int i = 0; i < 20; ++i) {
      char c = numero[i];
      EEPROM.write(i, c);
      Serial.print(c);
}
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
et via un mobile il y a un + devant
+33 6 66 66 66 66
Logged

Pages: [1]   Go Up
Jump to: