Salve a tutti, come da titolo ho una stringa e vorrei associarle un valore in base ad altri valori. Sicuramente non mi sono spiegato bene, quindi ecco il codice che sto usando attualmente:
Sbagli a leggere. Al link usa concat() e non strcat()
strcat() e le varie strxxx() sono funzioni che lavorano su stringhe e NON su String
String è una classe con i suoi "comandi"
Ti ha chiesto COSA ritorna, NON a che serve ...
... metti qui il codice di quella funziona (... mi raccomando, in conformità al regolamento, punto 7, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> ... primo a sinistra).
Su queste MCU sarebbe meglio non usare String, avido di memoria.
Meglio le stringhe classiche del C, ovvero i vettori di caratteri terminato da car.speciale '\0'
Visto che stai imparando, ti consiglio di passare alle vere stringhe del c con l'uso delle funzioni strxxx() e a snprintf()
nid69ita:
Su queste MCU sarebbe meglio non usare String, avido di memoria.
Meglio le stringhe classiche del C, ovvero i vettori di caratteri terminato da car.speciale '\0'
Visto che stai imparando, ti consiglio di passare alle vere stringhe del c con l'uso delle funzioni strxxx() e a snprintf()
String è una libreria, crea oggetti di tipo String, che possono portare al consumo totale della memoria visto che fa allocazione dinamica e Arduino Uno ha soli 2Kb di SRAM.
Se usi le stringhe del C classiche è meglio.
Basta che fai una ricerca nel forum su problema esaurimento memoria String (nello specifico frammentazione della memoria) https://forum.arduino.cc/index.php?topic=415238.0
Qui, ma in inglese: The Evils of Arduino Strings | Majenko's Hardware Hacking Blog
In 'C' le strighe altro non sono che array di "char" e la fine di una stringa viene identificata dal carattere 0x00, nel reference le trovi QUI. Quella che stai invece usando tu è la "classe" String del C++, descritta nel reference QUI.
Noi sconsigliamo sempre l'uso della classe String su una MCU come Arduino ...
Ricorda che NON sei su un PC dove c'è un sistema operativo ed un "garbage collector", sei su una piccola MCU con solo 2KBytes di SRAM, dove devi fare tutto tu e dove usare la classe "String", a causa dell'allocazione e riallocazione dinamica della memoria, porta quasi sempre ... a grossi problemi e sicuri mal di testa !!!
Quello che occorre fare è imparare ad usare le stringhe classiche del 'C' e le funzioni che trovai nella libreria standard (... che, oltretutto, è automaticamente inclusa dal IDE) AVR libc ed, in particolare, quanto è in <string.h>.