Halli Hallo,
benötige mal euren Rat / Hilfe!
Habe mir ein "einfaches" Menü gebastelt, mit hilfe von einer Struktur
(menue_t).
1
typedefstruct
2
{
3
#define MENUE_EXIT 111
4
5
char*name;
6
uint8_t(*fnc)(void);
7
uint8_tmenuePos;
8
}menue_t;
Dann erstelle Ich mir ein Array aus dieser Struktur..
1
menue_tmenue[]=
2
{
3
{"Time",menueSetTime,0},
4
{"Date",cnfgDate,1},
5
{"Alarm.",menueSetAlarm,2},
6
usw..
7
};
Untermenüs..
1
menue_tmenueAlert[]=
2
{
3
{"-A1",NULL,0},
4
{"-A2",NULL,1},
5
{"-A3",NULL,2},
6
{"-A4",NULL,3},
7
{"Cycl.",NULL,4},
8
{"Exit",NULL,5},
9
};
Und eine Funktion die mir das ganze auf den Bildschirm wirft..
1
uint8_topenMenue(menue_t*m,size_tsize)
2
{
3
uint8_tindex=menueCursor;
4
5
button.all=0;
6
flag.menueOpen=1;
7
menueTimeout=0;
8
9
clearDisplay(true,false);
10
11
while(1)
12
{
13
if(menueTimeout>500)
14
{
15
menueTimeout=0;
16
clearDisplay(true,false);
17
returnMENUE_EXIT;
18
}
19
20
if(button.pressed.up)
21
{
22
button.all=0;
23
menueTimeout=0;
24
clearDisplay(true,false);
25
if(index<(size-1))
26
{
27
index++;
28
}
29
}
30
31
if(button.pressed.down)
32
{
33
button.all=0;
34
menueTimeout=0;
35
clearDisplay(true,false);
36
if(index>0)
37
{
38
index--;
39
}
40
}
41
42
if(button.pressed.exit)
43
{
44
button.all=0;
45
menueTimeout=0;
46
flag.menueExit=1;
47
clearDisplay(true,false);
48
return111;
49
}
50
51
putStr(m[index].name,0);
52
53
if(button.pressed.enter)
54
{
55
button.all=0;
56
menueTimeout=0;
57
58
clearDisplay(true,false);
59
60
menueCursor=0;
61
62
if(m[index].fnc!=NULL)
63
{
64
m[index].fnc();
65
menueCursor=m[index].menuePos;
66
}
67
68
clearDisplay(true,false);
69
70
menueTimeout=0;
71
flag.menueExit=0;
72
73
returnindex;
74
}
75
}
76
77
flag.menueOpen=0;
78
79
return0;
80
}
Funktioniert soweit auch ganz gut. Wenn Ich jetzt in mein Untermenü
(menueAlert) bin und etwas einstelle, komme Ich nach der Einstellung
wieder zu meinem "Hauptmenüpunkt" ("Alarm.").
Ab hier stehe Ich auf dem Schlauch. Eigentlich möchte Ich gar nicht
wieder zu diesem Punkt, sondern in meinem Untermenü bleiben solange bis
Ich es halt explizit befehle.
Wie stelle Ich das nun am besten an?