A questo punto, anche per i BABBANI come me, suggerisco una parte del forum da dedicare a TEMI SCOTTANTI, come appunto il NON uso di String, l'uso di Millis e altre amenità, in modo, anche, da non ripetere le eterne risposte che si danno a chi entra qui per la prima volta.
Poi capisco che Guglielmo allega i link con la frase "leggi QUESTO e poi QUESTO e poi QUESTO", ma capite che zompettare da un topic all'altro non è semplice.
Per esempio, ho scritto su WeMos D1 (16 Mega) questa parte di programma per inviare dati a MySql e a web, e qui faccio AMPIO uso della classe String. Cosa mi devo aspettare?
Per adesso problemi non ne ho, ma non ne vorrei avere in futuro...
void LeggiGiornale () {
//----------------------------- LETTURA GIORNALE
conta = 1;
String strG = "";
for (i = 301; i < 421; i++) {
ret = node.readHoldingRegisters (i, 16);
delay (del);
if (ret == node.ku8MBSuccess) {
unsigned int nn = node.getResponseBuffer (0);
if (conta == 1)
{
if (i <= 330) strG += "_1c20";
if (i > 330 && i <= 360) strG += "_2c20";
if (i > 360 && i <= 390) strG += "_3c20";
if (i > 390 && i <= 420) strG += "_4c20";
strG += nn;
strG += "-";
}
else if (conta == 2)
{
strG += nn;
strG += "-";
}
else if (conta == 3)
{
strG += nn;
strG += "s";
}
else if (conta == 4)
{
strG += nn;
strG += "a";
}
else if (conta == 5)
{
strG += nn;
strG += "a00f";
}
else if (conta > 5)
{
strG += nn;
strG += "_";
}
}
else Serial.print ("Error G ");
if (conta == 10) conta = 0;
conta++;
}
strG.replace("_1c200-0-0s0a0a00f0_0_0_0_0_", "");
strG.replace("_2c200-0-0s0a0a00f0_0_0_0_0_", "");
strG.replace("_3c200-0-0s0a0a00f0_0_0_0_0_", "");
strG.replace("_4c200-0-0s0a0a00f0_0_0_0_0_", "");
// --------------------------- to MySql WEB
digitalWrite (2, LOW);
strURL = "GET /importG.php?s=";
strURL += serialnumber;
strURL += "_";
strURL += strG;
strURL += " HTTP/1.1";
client.println(strURL);
client.println("Host: www.xxxxxxxxxx.info");
client.println("User-Agent: Arduino 1.0\r\n\r\n");
Serial.println (strURL);
}
// --------------------------- W E B -----------------------------------------------
void importVARIABILI() // -------------------- INVIA VARIABILI A MySQL
{
strURL = "GET /import.php?s=";
strURL += serialnumber;
strURL += "&t=";
strURL += strD;
strURL += " HTTP/1.1";
client.println(strURL);
client.println("Host: www.xxxxxxxxxx.info");
client.println("User-Agent: Arduino 1.0\r\n\r\n");
Serial.println (strURL);
var1 = 1;
}
void importSTATO() // ------------------------ INVIA STATI A MySQL
{
strURL = "GET /importS.php?s=";
strURL += serialnumber;
strURL += "&d=";
strURL += strXY;
strURL += " HTTP/1.1";
client.println(strURL);
client.println("Host: www.xxxxxxxxxx.info");
client.println("User-Agent: Arduino 1.0\r\n\r\n");
Serial.println (strURL);
}
void funclic()
{
strURL = "GET /public/AA/";
strURL += serialnumber;
strURL += ".txt HTTP/1.1";
client.println(strURL);
client.println("Host: www.xxxxxxxxxx.info");
client.println("User-Agent: Arduino 1.0\r\n\r\n");
String c = client.readString();
int f = c.length();
int v = 1;
int g = f - v;
if (c.substring(g, f) == "1")
{
if (var1 == 0) {
LeggiVariabili ();
var1 = 1;
}
for (ii = 1; ii <= 20; ii++) {
LeggiStati ();
delay (800);
}
}
else var1 = 0;
}
void modificasetup()
{
strURL = "GET /public/AA/PRO_";
strURL += serialnumber;
strURL += ".txt HTTP/1.1";
client.println(strURL);
client.println("Host: www.xxxxxxxxxx.info");
client.println("User-Agent: Arduino 1.0\r\n\r\n");
String c = client.readString();
int f = c.length();
int v = 1;
int g = f - v;
if (c.substring(g, f) == "*") {
v = 10;
g = f - v;
String dd = c.substring(g, f);
variabile = dd.substring(0, 3);
if (dd.substring(4, 5) != 0) valore = dd.substring(4, 9);
else if (dd.substring(5, 6) != 0) valore = dd.substring(5, 9);
else if (dd.substring(6, 7) != 0) valore = dd.substring(6, 9);
else if (dd.substring(7, 8) != 0) valore = dd.substring(7, 9);
else if (dd.substring(8, 9) != 0) valore = dd.substring(8, 9);
// --------------------------- SCRITTURA VARIABILE D -------------
ret = node.writeSingleRegister (variabile.toInt(), valore.toInt());
delay (del);
Serial.print ("Scrivo D"); Serial.print (variabile); Serial.println (valore);
var1 = 0;
funcfatto();
}
}
void funcfatto()
{
strURL = "GET /modifica.php?s=";
strURL += serialnumber;
strURL += " HTTP/1.1";
client.println(strURL);
client.println("Host: www.xxxxxxxxxx.info");
client.println("User-Agent: Arduino 1.0\r\n\r\n");
LeggiVariabili ();
}