Eine Menü-Bibliothek für GLCD?

Ich versuche gerade ein Gerät zu bauen welches über das Menü per Tastenkreuz am GLCD(128x64) oder einem LCD(20x4) gesteuert werden kann.

Bisher habe ich keine vernünftige Bibliothek gesehen mit der man das menü aufbauen kann.

Gibt es da Empfehlungen oder Code-Beispiele wo es schon funktioniert hat?

Also für 20x4 geht es hier mit:

Projektvorstellung: LCDMenu2 Lib zur Generierung von Menüs mit mehreren Ebenen

Wenn ich ein 128x64 Display hätte, könnte ich die Lib auch darauf umschreiben, dass würde aber einige Zeit dauern, da ich noch nie damit gearbeitet habe.

Sehr interessant, das werde ich mir gleich anschauen.

m2tklib würde mit dem GLCD funktionieren, sofern das 128x64 GLCD von der GLCDv3 oder der dogm128 lib supported wird:

http://code.google.com/p/m2tklib/

Neben beliebig geschachtelten Menüs, gibt es auch Zahlen und Texteingaben, Buttons, Auswahl-Listen, Scrollbars...

Das Beispiel von der Projektseite zeigt ein paar Radio Buttons: cancel und ok sind als Buttons implementiert.

Der code für dieses beispiel sieht so aus:

uint8_t select_color = 0;
void fn_ok(m2_el_fnarg_p fnarg) {
  /* accept selection */
}
void fn_cancel(m2_el_fnarg_p fnarg) {
  /* discard selection */
}
M2_LABEL(el_label1, NULL, "red");
M2_RADIO(el_radio1, "v0", &select_color);
M2_LABEL(el_label2, NULL, "green");
M2_RADIO(el_radio2, "v1", &select_color);
M2_LABEL(el_label3, NULL, "blue");
M2_RADIO(el_radio3, "v2", &select_color);
M2_BUTTON(el_cancel, NULL, "cancel", fn_cancel);
M2_BUTTON(el_ok, NULL, " ok ", fn_ok);
M2_LIST(list) = { 
    &el_label1, &el_radio1, 
    &el_label2, &el_radio2,  
    &el_label3, &el_radio3, 
    &el_cancel, &el_ok 
};
M2_GRIDLIST(list_element, "c2",list);

Das ganze sieht etwas kryptisch aus, wird aber in mehreren Tutorials auf der Projektseite erklärt.

Oliver