Buenas,
Hace unos meses cree un post comentando problemas con una pantalla tft para un proyectito que tengo. El caso que estoy generando una librería para facilitar la creación de las diferentes interfaces de usuario y me estoy topando con un problemilla de acceso de memoria.
Os muestro el pedazo de código que me da problemas.
typedef struct {
String text;
int font = 0;
int coord[2] = {10, 0};
}ScreenLine;
typedef struct {
int size;
ScreenLine* lines;
}ScreenLines;
ScreenLines defineTexts (int DisplayNumber) {
ScreenLines ScreenTexts;
Serial.println("defineTexts::Definiendo Textos");
if (DisplayNumber == 0) {
// lines = (ScreenLine*) malloc(5 * sizeof(ScreenLine));
ScreenTexts.lines = new ScreenLine[5];
ScreenTexts.lines[0].text = "La sonda marca la temparatura actual";
ScreenTexts.lines[1].text = "Para comenzar el cambio de agua pulse";
ScreenTexts.lines[2].text = "continuar";
ScreenTexts.lines[3].text = "Recuerde que se tomara la temperatur";
ScreenTexts.lines[4].text = "actual como referencia";
ScreenTexts.lines[5].text = "Temp. Actual: ";
ScreenTexts.lines[5].font = 1;
ScreenTexts.lines[5].coord[1] = 60;
Serial.println("defineTexts::textos cargados");
ScreenTexts.size =5;
return ScreenTexts;
}
void loadScreens()
{
//********PANTALLA 1********//
ScreenLines ScreenTexts = defineTexts(0);
Serial.println("TEXTO");
Serial.println(ScreenTexts.lines[0].text);
}
}
Os pongo un poco en contexto, la parte que podéis ver tiene como objetivo definir los textos de las diferentes pantallas (antes lo estaba haciendo línea a línea). El caso es que los textos llegan a definirse y incluso la línea (Serial.println(ScreenTexts.lines[0].text)) llega a mostrarlo en el serial pero a partir de ahí casca y no continua con la ejecución.
Tengo unas clases (screens, bodyScreens, bodyPopup) que se encargan de almacenar y gestionar la interfaces de usuarios. La intención del pedazo de código de arriba es lo que comentaba anteriormente, ordenarlo un poco y no tener que ir línea a línea a la hora de crear la pantalla. Podríais echarme una mano?
Gracias de antemano. Un saludo.