// Serial read and "parse"
#define BUF_SIZE 66 // max 64 byte, delší rozdělí po 64 bytech - opakuje se readSerial
//char newMessage[BUF_SIZE] = { "" };
String newMessage[BUF_SIZE] = { "" };
bool newMessageAvailable = false;
uint8_t m_length; // length of new message
void setup() {
Serial.begin(9600); // Spuštění sériové komunikace
Serial.setTimeout(50); // Zkrácení timeoutu na 50 ms pro rychlejší odezvu
Serial1.begin(9600, SERIAL_8N1, 16, 17); // hwUART2 e.g. pins RX=GPI16 TX=GPI17 for Nextion serial
}
void loop() {
// Kontrola, zda jsou v bufferu vůbec nějaká data k dispozici
if (Serial.available() > 0) {
// Načte text ze sériové linky, dokud nenarazí na klávesu Enter ('\n')
// String newMessage = Serial.readStringUntil('\n');
String newMessage = Serial.readStringUntil('X');
newMessage.trim(); // Odstraní případné neviditelné znaky na konci (např. '\r' při CR+LF)
m_length = newMessage.length();
Serial.print("Prijato : ");
Serial.print(m_length);
Serial.println(" byte, indexed output :");
for(uint8_t index = 0; index < m_length+1; index++)
{
Serial.print(newMessage[index]); // mohu pracovat s jednotlivými byte pole
}
Serial.println("");
Serial.print("newMessage : ");
Serial.println(newMessage);
Serial.println("loop.....");
}
}
/*
{
if (newMessageAvailable && m_length > 0)
{
Serial.print("Message length : ");
Serial.println(m_length);
Serial.println(newMessage);
// parsing ind.char
// if(newMessage[.]== ... etc)
//pro testovací účel jen zobrazím jednotliv0 byte:
for(uint8_t index = 0; index < m_length+1; index++)
{
Serial.print(newMessage[index]); // mohu pracovat s jednotlivými byte pole
// newMessage[index] = ' '; // nebere "..."
// newMessage[index] = 0; // vymaže jen m_length bytů z array, další zůstanou staré, jen je příště nezobrazím
}
Serial.println();
// newMessage = "empty"; // to nejde, nějak bych měl umět vymazat celé array char[..] ?, zatím to mažu při zpracování
newMessageAvailable = false;
m_length = 0;
}
readSerial();
}
*/