Bonjour,
Je désire créer un système de menus dans mon projet.
écran=afficheur alphanumérique 1*16
uC=PIC16F877A
Compilateur=mikroC
Structure de menus:
MENU 1="";
MENU 1.1="";
MENU 1.2="";
MENU 1.3="";
MENU 2="";
MENU 2.1="";
MENU 2.2="";
MENU 2.3="";
MENU 2.4="";
MENU 2.5="";
MENU 3="";
MENU 3.1="";
MENU 3.2="";
MENU 3.3="";
MENU 4="";
MENU 4.1="";
MENU 4.2="";
MENU 4.3="";
MENU 4.4="";
chaque menu(ou sous menu) se compose d'un maximum de 16 caractères.
J'ai fait plusieurs essais mais j'ai trouvé que mes méthodes(les classiques) sont gourmandes en ressources mémoires)
- 1er essai
Code:char *menu1[] = {"menu1", "menu1.1", "menu1.2", "menu1.3"};// j'ai déclaré chaque menu sous forme d'un tableau en ram char *menu2[] = {"menu2", "menu2.1", "menu2.2", "menu2.3"};// .... puis suites à des actions qui définissent i et j (menu i.j) switch (i) { case 1: ecran = menu1[j]; break; case 2: ecran = menu2[j]; break; case 3: ecran = menu3[j]; break; case 4: ecran = menu4[j]; break; } puis j'affiche écran(chaine de caractère en ram)
le problème de cette méthode c'est que il reste pas d'espace continue en ram pour saisir toutes les chaines de menus
- 2eme essai
On m'a conseillé d'utiliser des constantes:
const char *menu1[] = {"menu1", "menu1.1", "menu1.2", "menu1.3"};
m'ai j'ai constaté que mikroC stocke ces variables en ram
et en plus j'ai des difficultés à les gérer (incompatibilités)
- 3eme possibilité
SEB.26 m'a proposé de travailler avec des listes chainés(c'est le première fois que j'entends parler de cette méthode) j'ai consulté Wikipédia pour comprendre un peu, j'ai pas réussi à le faire(ça parle de la théorie). Ça serai gentil si quelqu'un pourrait m'expliquer le truc avec un exemple appliqué à mes menu.
si quelqu'un a déjà réaliser un programme semblable. ça sera très bien de voir les idées des autres.(ou bien des liens sur la toile)
- 4eme possibilité
Je vous remercie d'avance.
-----