Riprendendo un precedente articolo su Arduino e le strighe oggi ti racconto di un test che ho eseguito nei giorni scorsi e che mi ha risolto molti problemi proprio nelle conversioni da char a string e viceversa.
Problema:
Vorresti poter applicare uno dei metodi dell’oggetto String ad una variabile di tipo char, ad esempio estrarre solo una parte della stringa (substring).
I metodi dell’oggetto String puoi applicarli solo a variabili di questo tipo, per cui se hai una variabile di tipo char o char* devi convertire in string il suo contenuto per potervi applicare uno dei metodi.
Soluzione:
Guarda lo script sotto, in cui ho definito delle variabilidi tipo char e string per poter eseguire le conversioni necessarie:
char *mystr;
String miastringa;
void setup()
{
Serial.begin(9600);
mystr = "Testo di prova";
}
void loop()
{
miastringa = String(mystr);
Serial.println(miastringa.substring(0,5);
}
analizziamo il codice linea per linea:
linea 01: definisci una variabile di tipo char* che simula la tua variabile da convertire;
linea 02: definisci una variabile di tipo String, che accoglierà la stringa convertita e su sui applicherai il metodo substring;
linea 04: crea la funzione setup(), di tipo void;
linea 05: inizializza la comunicazione seriale, la utilizzerà per visualizzare il risultato del metodo substring;
linea 06: assegno un valore alla variabile mystr, questa variabile nel tuo sketch è quella a tua disposizione durante il loop(), in questo esempio la definisci alla linea 01 e la valorizzi nella setup() solo a titolo di esempio;
linea 10: crea la funzione loop(), eseguita cilicamente durante tutto il funzionamento dello sketch;
linea 12: esegue la conversione vera e propria, sfruttando il costruttore del’oggetto String assegno alla variabile miastringa il valore della variabile mystr;
linea 13: scrive sul monitor seriale dell’IDE Arduino il risultato del metodo substring, in questo esempio il risultato sarà la parola Testo.
Ringrazio Luca per avermi illuminato sulla possibilità di convertire i tipi char in String sfruttando il costruttore dell’oggetto String.
Buon lavoro






2 comments
Marco
23 gennaio 2012 a 21:20 (UTC 2) Link to this comment
Ciao Mauro,
vorrei ringraziarti per la chiarissima spiegazione !
Complimenti per l’analisi dettagliata.
Buon lavoro anche a te !
Marco
jcamma
20 dicembre 2012 a 13:11 (UTC 2) Link to this comment
Ciao Mauro,
Continuo con la lettura del tuo corso arduino che trovo davvero eccezionale e volevo sollevare una domanda; magari può servire a chi come me sta cominciando con arduino ed anche per capirne io un po’ di più. Provando il codice postato per convertire char–> string il simulatore vede “char* mystring” già come una stringa e non come ad esempio un array di char. Per fare ciò ho fatto una piccola modifica ma non capisco se doveva essere questo il risultato voluto… ( sperando che non mi spuntano i mostri sul codice che posto..)
Nota comportamentale del simulatore (V. 098A)
- Non riconosce il metodo ToCharArray ( anche con gli esempi forniti dall’IDE dà errore )
- Non riconosce la dichiarazione char[] ( vuole il numero di char )
void loop()
{
char mystr[29]= “ecco l’Array char[] di prova”;
String miastringa;
Serial.println(mystr);
miastringa = String(mystr);
String str = miastringa.substring(0,5);
Serial.println(“ed ecco la sub stringa String—->” + str);
while(true);
}
Buona giornata e sempre complimentissimi!