Gracias a todos y feliz año 2015.
Si "TFTLCDCyg" así lo había solucionado he fabricado un código que funciona, seguramente es bastante malo pero como me ha costado mucho encontrar información y pruebas, lo pongo por si a alguien le sirve, igualmente si se puede mejorar seria bueno;
Simplemete es una estructura de menús donde se puede aplicar el código que se quiera y es muy facil de implementar pues se basa en las librerias de UTFT y UTFT_Utouch.
#define imagedatatype unsigned int
#include <UTFT.h>
#include <UTouch.h>
#include <UTFT_Buttons.h>
// Declaracion de fuentes que se usaran
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t Dingbats1_XL[];
// Declare which bitmaps we will be using
extern imagedatatype casa2[];
extern imagedatatype casa1[];
extern imagedatatype casa[];
extern imagedatatype monkey[];
UTFT myGLCD(ILI9341_S5P, /*SDI=*/ 51,/*CLK=*/ 52, /*CS=*/45,/*RST=*/ 47,/*DC=*/ 49);
UTouch myTouch(33, 35, 37, 39, 41);// (T_CLK, T_CS, T_DIN, T_DOUT, T_IRQ).
UTFT_Buttons myButtons(&myGLCD, &myTouch);// Finally we set up UTFT_Buttons :)
//Variables Posicinales Botones
byte MenuID;
int b1x1=1, b1y1=1, b1x2=1, b1y2=1;
int b2x1=1, b2y1=1, b2x2=1, b2y2=1;
int b3x1=1, b3y1=2, b3x2=1, b3y2=1;
int b4x1=1, b4y1=3, b4x2=1, b4y2=1;
int b5x1=1, b5y1=4, b5x2=1, b5y2=1;
int b6x1=1, b6y1=5, b6x2=1, b6y2=1;
int b7x1=1, b7y1=6, b7x2=1, b7y2=1;
int b8x1=1, b8y1=7, b8x2=1, b8y2=1;
int b9x1=1, b9y1=8, b9x2=1, b9y2=1;
int X = 0;
//Variables Texto Botones
char btexto1[]= "Main";
char btexto2[]= "";
char btexto3[]= "";
char btexto4[]= "";
char btexto5[]= "";
char btexto6[]= "";
char btexto7[]= "";
char btexto8[]= "";
char btexto9[]= "";
void setup()
{
myGLCD.InitLCD();
//myGLCD.clrScr();
myGLCD.setFont(BigFont);
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
myButtons.setTextFont(BigFont);
myButtons.setButtonColors(VGA_BLUE,VGA_GRAY,VGA_BLACK, VGA_YELLOW, VGA_WHITE);
Inicio();
}
void Inicio(){
myButtons.deleteAllButtons();
myGLCD.clrScr();
myButtons.setButtonColors(VGA_RED,VGA_GRAY,VGA_BLACK, VGA_YELLOW, VGA_WHITE);
int but1,pressed_button;
but1 = myButtons.addButton( 10, 10, 300, 220, "INICIO");
myButtons.drawButtons();
while(1){X= X++; myGLCD.printNumI(X, 10, 10);
if (myTouch.dataAvailable() == true); {
pressed_button = myButtons.checkButtons();
if (pressed_button==but1){myGLCD.print(">>>MENU PRINCIPAL>>>>", 10, 220); myButtons.deleteAllButtons(); loop();}}}}
void Menu2(){
myButtons.deleteAllButtons();
myGLCD.clrScr();
myGLCD.fillScr(VGA_RED);
myButtons.setButtonColors(VGA_RED,VGA_GRAY,VGA_BLACK, VGA_YELLOW, VGA_WHITE);
int but1, pressed_button;
but1 = myButtons.addButton( 230, 10, 80, 40, "Main");
myButtons.drawButtons();
myGLCD.print("Menu 2", 10, 220);
while(1){X= X++; myGLCD.printNumI(X, 10, 10);
if (myTouch.dataAvailable() == true);{
pressed_button = myButtons.checkButtons();
if (pressed_button==but1){myGLCD.print("En curso Menu Principal", 10, 220); loop();}}}}
void Menu3(){
myButtons.deleteAllButtons();
myGLCD.clrScr();
myGLCD.fillScr(VGA_GREEN);
myButtons.setButtonColors(VGA_RED,VGA_GRAY,VGA_BLACK, VGA_YELLOW, VGA_WHITE);
int but1, pressed_button;
but1 = myButtons.addButton( 230, 10, 80, 40, "Main");
myButtons.drawButtons();
myGLCD.print("Menu 3", 10, 220);
while(1){X= X++; myGLCD.printNumI(X, 10, 10);
if (myTouch.dataAvailable() == true);{
pressed_button = myButtons.checkButtons();
if (pressed_button==but1){myGLCD.print("En curso Menu Principal", 10, 220); loop();}}}}
void Menu4(){
myButtons.deleteAllButtons();
myGLCD.clrScr();
myGLCD.fillScr(VGA_YELLOW);
myButtons.setButtonColors(VGA_RED,VGA_GRAY,VGA_BLACK, VGA_YELLOW, VGA_WHITE);
int but1, pressed_button;
but1 = myButtons.addButton( 230, 10, 80, 40, "Main");
myButtons.drawButtons();
myGLCD.print("Menu 4", 10, 220);
while(1){X= X++; myGLCD.printNumI(X, 10, 10);
if (myTouch.dataAvailable() == true);{
pressed_button = myButtons.checkButtons();
if (pressed_button==but1){myGLCD.print("En curso Menu Principal", 10, 220); loop();}}}}
void Menu5(){ }
void Menu6(){ }
void Menu7(){ }
void Menu8(){ }
void Menu9(){ }
void loop()
{
myButtons.deleteAllButtons();
myButtons.setButtonColors(VGA_BLUE,VGA_GRAY,VGA_BLACK, VGA_YELLOW, VGA_WHITE);
myGLCD.clrScr();
//Variables Posicinales Botones
b1x1 = 100, b1y1 = 20, b1x2 = 80, b1y2 = 40; char btexto1[]= "Main";
b2x1 = 100, b2y1 = 70, b2x2 = 80, b2y2 = 40; char btexto2[]= "B2";
b3x1 = 100, b3y1 = 120, b3x2 = 80, b3y2 = 40; char btexto3[]= "B3";
b4x1 = 100, b4y1 = 170, b4x2 = 80, b4y2 = 40; char btexto4[]= "B4";
b5x1 = 1, b5y1 = 1, b5x2 = 1, b5y2 = 1; char btexto5[]= "";
b6x1 = 1, b6y1 = 1, b6x2 = 1, b6y2 = 1; char btexto6[]= "";
b7x1 = 1, b7y1 = 1, b7x2 = 1, b7y2 = 1; char btexto7[]= "";
b8x1 = 1, b8y1 = 1, b8x2 = 1, b8y2= 1; char btexto8[]= "";
b9x1 = 1, b9y1 = 1, b9x2 = 1, b9y2= 1; char btexto9[]= "";
//Ponemos todos los botones necesarios.
int but1, but2, but3, but4, but5, but6, but7, but8, but9, pressed_button;
but1 = myButtons.addButton( b1x1, b1y1, b1x2, b1y2, btexto1);
but2 = myButtons.addButton( b2x1, b2y1, b2x2, b2y2, btexto2);
but3 = myButtons.addButton( b3x1, b3y1, b3x2, b3y2, btexto3);
but4 = myButtons.addButton( b4x1, b4y1, b4x2, b4y2, btexto4);
but5 = myButtons.addButton( b5x1, b5y1, b5x2, b5y2, btexto5);
but6 = myButtons.addButton( b6x1, b6y1, b6x2, b6y2, btexto6);
but7 = myButtons.addButton( b7x1, b7y1, b7x2, b7y2, btexto7);
but8 = myButtons.addButton( b8x1, b8y1, b8x2, b8y2, btexto8);
but9 = myButtons.addButton( b9x1, b9y1, b9x2, b9y2, btexto9);
myButtons.drawButtons();
myGLCD.print("None ", 10, 220);
// Definimos todas las funciones posibles que necesitamos en los botones, tiniendo en cuenta que cada boton tendra una unica funcion.
while(1)
{
if (myTouch.dataAvailable() == true);
{
pressed_button = myButtons.checkButtons();
if (pressed_button==but1){myGLCD.print("Boton1 ", 10, 220); loop();}
if (pressed_button==but2){myGLCD.print("Boton2 ", 10, 220); Menu2();}
if (pressed_button==but3){myGLCD.print("Boton3 ", 10, 220); Menu3();}
if (pressed_button==but4){myGLCD.print("Boton4 ", 10, 220); Menu4();}
if (pressed_button==but5){myGLCD.print("Boton5 ", 10, 220); Menu5();}
if (pressed_button==but6){myGLCD.print("Boton6 ", 10, 220); Menu6();}
if (pressed_button==but7){myGLCD.print("Boton7 ", 10, 220); Menu7();}
if (pressed_button==but8){myGLCD.print("Boton8 ", 10, 220); Menu8();}
if (pressed_button==but9){myGLCD.print("Boton9 ", 10, 220); Menu9();}
if (pressed_button== -1){myGLCD.print("None ", 10, 220);}
}
}
}
Sigo sin saber porque no se le puede pasar a el "Label" la etiqueta con una variable Char, porque realizando pruebas, desde otra funcion perfectamente se le puede pasar las variables de posición y tamaño y estando en la misma funcion la variable char no?¿.
Un saludo y gracias.