Hi guys!
First of all, I'm a noobie so if I made horrible mistakes in my code or idea of functionment, please forgive me
I use a MKRZERO with a OLED screen to display informations on the case of my HTPC. I planned to send these infos from the PC running Kodi to the arduino to display everything.
I first used a Nano and it worked well with the serial monitor but it was power limited to use the OLED screen. I then changed to a MKRZERO but now, sending one string via the Serial port of the GUI causes the freeze of the board and GUI.
Here is the code:
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
U8G2_SSD1322_NHD_256X64_F_4W_HW_SPI u8g2(U8G2_R2, 12, 7, 6);
int t;
String Ser;
String C;
String L;
char *T = "1234567890123456789012345678901234567890123456789012345678901234567890";
char *A = "12345678901234567890123456789012345678901234567890123456789012345678901";
char *H = "12Â 34";
char *R = "0:35:42/2:10:50";
void setup(void) {
 u8g2.begin();
 Serial.begin(115200); // opens serial port, sets data rate to 9600 bps-
 t = 0;
 T = "1234567890123456789012345678901234567890123456789012345678901234567890";
 A = "12345678901234567890123456789012345678901234567890123456789012345678901";
 H = "12 34";
 R = "0:35:42/2:10:50";
}
void loop(void) {
 u8g2.firstPage();
 do {
  //informations
  u8g2.setFontPosBottom();
  u8g2.setFont(u8g2_font_helvR14_tf);
  u8g2.drawUTF8(0, 30, T); //titre
  u8g2.setFont(u8g2_font_helvB10_tf);
  u8g2.drawUTF8(0, 50, A); //auteur
  //heure
  u8g2.setFont(u8g2_font_helvB08_tn);
  u8g2.setFontPosTop();
  u8g2.drawUTF8(226, 0, H);
  if (t < 3) {
   u8g2.drawUTF8(234, 0, "  ");
  } else {
   u8g2.drawUTF8(234, 0, " : ");
  }
  //barre avancement
  u8g2.drawBox(0, 63, 170, 1);
  u8g2.drawBox(0, 60, 100, 3);
  //texte avancement
  u8g2.setFont(u8g2_font_5x8_tn);
  u8g2.setFontPosBottom();
  u8g2.drawUTF8(180, 64, R);
 } while ( u8g2.nextPage() );
 //Clignotement ":"
 t += 1;
 if (t > 5) {
  t = 0;
 }
 while (Serial.available()) {
  Ser = Serial.readString(); // read the incoming data as string
  L = Ser.substring(1);
  C = Ser.substring(0, 1);
  if (C == "T") {
   strcpy (T, L.c_str());
  } else if (C == "A") {
   strcpy (A, L.c_str());
  } else if (C == "H") {
   strcpy (H, L.c_str());
  } else if (C == "R") {
   strcpy (R, L.c_str());
  }
 }
 delay(50);
}
Any idea?
Thanks in advance,
Nicolas