Alors je reprends pour vous expliquer ce que je cherche à faire :
Je voudrai générer une fonction boucle qui traitera les unes après les autres , les 25 lignes d'un tableau numérique appelé volets_jour :
- volets_jour est un tableau int de 25 lignes : chaque ligne du tableau contient 1 ou 2 chiffres : 1, 13, 7, 22, 9 ...
- J'ai besoin de lire chaque ligne de ce tableau numérique : volets_jour
puis convertir à chaque fois l'entier en son équivalent chiffré vers un tableau de caractères appelé buffer_volets_jour :
char buffer_volets_jour[25][2+1];
- j'ai besoin d'effectuer un formatage avant de stocker les entiers dans le tableau de caractère, ex : si dans le tableau int j'ai une ligne qui contient un chiffre unique : 1, 7, 9 ... celui ci sera deviendra 01 , 07, 09 ( 0 ajouté devant le chiffre )
- Stocker chaque ligne du tableau de caractères buffer_volets_jour dans une mémoire eeprom avec la fonction existante : XE2Write
address_start sera un paramètre de la fonction
Ex : si en utilisant la fonction on défini address_start à 0x000000 par exemple, les ecritures successives dans l'eeprom seront pour la 1ere ecriture à 0x000000 puis la suivante à 0x000003 puis 0x000006 ... etc ...
En effet, on sait que chaque ligne de buffer_volets_jour contiendra 2 caractères on indiquera donc au programme que la prochaine adresse d'ecriture sera address_start +3, ainsi la mémoire eeprom se remplira au fur et à mesure pour stocker à la suite les 25 lignes de buffer_volets_jour.
1 2 3 4 5 6 7
| XEEBeginWrite(EEPROM_CONTROL, address_start);
for(k = 0; k < strlen(buffer_volets_jour); ++k)
{
XE2Write(buffer_volets_jour[k]);
}
XE2EndWrite();
address_start += 0x000003 |
D'ou mon idée de créer une fonction qui ressemble à cela, mais ça ne fonctionne pas ...
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
| void Store_eeprom2_volets_jour (LWORD address_start)
{
BYTE i, k;
// Formatage de chaque ligne du tableau numérique volets_jour en un tableau de charactères
// chaque ligne contiendra son équivalent entier vers 2 caractères Ex : int 1 deviendra char 01
for(i = 0; i < 25; ++i)
{
sprintf (buffer_volets_jour[i], (far rom char*)"%02i", volets_jour[i]);
// Remplissage :
// buffer_volets_jour[1]
// ...
// buffer_volets_jour[25]
// Est ce utile de passer ici par un buffer de caractère temporaire ?
mini_eeprom_buffer = buffer_volets_jour[i];
// Ecriture de mini_eeprom_buffer dans l'eeprom
XEEBeginWrite(EEPROM_CONTROL, address_start);
for(k = 0; k < strlen(mini_eeprom_buffer); ++k)
{
XE2Write(mini_eeprom_buffer[k]);
}
XE2EndWrite();
// incrémente de +3 l'adresse de départ pour la prochaine écriture dans l'eeprom
address_start += 0x000003
}
} |
Le résultat final attendu serait ceci , exemple :
Store_eeprom2_volets_jour(0x000000);
address_start : 0x000000
si le tableau int volets_jour qui contient 1 , 4, 7, 10, 5, 13 ... 8
alors le tableau buffer_volets_jour contiendra : 01, 04, 10, 05, 13 ... 08
et l'eeprom se remplira ainsi :
adresse 0x000000 : 01
adresse 0x000003 : 04
adresse 0x000006 : 10
adresse 0x000009 : 05
adresse 0x00000C : 13
...
adresse 0x000019 : 08
Merci de votre aide,
Partager