Serial.read

boas, estou a tentar receber data no arduino mega para mostrar no display de um tft, mas a data é um texto longo, e quando mostra no lcd a data, mostra 4 ou 5 linhas e depois a restante data começa a por-se em cima da que recebeu primeiro, nao seio que estarei a fazer mal se é um problem no TFT lcd ou na maneira que estou a receber a data, se for possivel dar uma ajudinha seria impecavel.

este é o code que tenho feito
obrigado

#include <Adafruit_GFX.h> 
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;

void setup() {
  // initialize both serial ports:
  Serial.begin(4800);
  Serial1.begin(4800);
    tft.reset();
    uint16_t identifier = tft.readID();
    if (identifier == 0xEFEF) identifier = 0x9320;
    tft.begin(identifier);
}

 
void loop() {
  // read from port 1, send to port 0:
  String msg = "";
  if (Serial1.available() > 0) {

    while (Serial1.available() > 0) {
      msg += char(Serial1.read());
      
    }
     
  }
  tft.setCursor(1, 45);
 tft.setTextSize(1);
  tft.println(msg);
  delay(100);
  
if (Serial.available()) {
  int inByte = Serial.read();
  Serial1.write(inByte);
}
}

Se o display nao chega para meter essa data, que tal diminuir o formato como e mostrada a data?

para ser mais especificoo que estou a tentar fazer é tenho um fusebit doctor para reparar chips da atmel, e estava a tentar fazer de maneira que os podesse reparar sem precisar num computador, ou seja ter um lcd que me mostra-se as opcoes de reparacao, a informaçao que pretendo mostrar é

[2J
Welcome
AVR Atmega fusebit doctor (HVPP+HVSP) version 2.11
http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp
Usage in commercial/profit purposes not allowed

MANUAL HVPP MODE

Init programming...  DONE
Read signature...    1E 95 0F 
Searching chip...    Atmega328P
Read fusebits...     L:62 H:D9 E:FF
Should be...         L:62 H:D9 E:FF
Lockbits...          DISABLED (CF)

What to do?...
1 - write fusebits
2 - modify fusebits
3 - set lockbits
4 - chip erase
5 - end

o lcd que tou a usar é um 2.8" Inch TFT LCD Display Touch Screen, que tem o espaço suficiente para mostrar toda a informaçao

Ahhh, data era dados e nao a data corrente...

Nao tens de ver o que esta no LCD e depois apagar e reescrever?

o problema tava que tava a por tft.print(msg); em vez de tft.write(msg); agora já me aparece tudo

obrigado