Bonjour,
Difficile de trouver un titre explicite pour ma question... Ce n'est pas très compliqué :
Dans mon code je déclare plusieurs variables les unes à la suite des autres :
Je voudrais que ces variables occupent un espace en RAM "contigu"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 byte serverIP[] = { 192, 168, 123, 32 }; IPAddress ip(192, 168, 123, 177); byte LumiereA = 205; byte LumiereB = 3; byte delayPingServer = 10; byte mac[]= { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
Voici un exemple :
Les octets aux adresses 1 à 4 correspondent à serverIP[]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [01][02][03][04][05][06][07][08][09][0A][0B][0C][0D][0E][0F][10][11]
Les octets aux adresses 5 à 8 correspondent à ip
L'octet à l'adresse 9 correspond à LumiereA
L'octet à l'adresse 0A correspond à LumiereB
L'octet à l'adresse 0B correspond à delayPingServer
Les octets aux adresses 0C à 11 correspondent à mac
Vous allez me dire : pourquoi ?
Dans mon programme je vais avoir besoin de copier ces variables depuis et vers l'EEPROM
Je vais aussi avoir besoin de pouvoir les modifier avec une interface utilisateur.
Actuellement je dois gérer l'affichage, la saisie et la copie avec pas mal d'instructions et de switch-case ce qui aboutit à un code volumineux.
Si ces variables sont "à la suite", avec un pointeur je peux afficher, saisir et copier chaque octet de ce paquet de variable de façon plus efficace : par exemple pour tout copier ou tout affiche, une boucle for next avec une instruction suffit.
Comment faire cela de façon fiable, c'est à dire être certain que le compilateur place ces variables à des adresses qui se suivent ?
Je pense déclarer un buffer, et ensuite déclarer les variables en leur spécifiant une adresse relative dans ce buffer
Merci
A bientôt
Partager