«

»

set 30

Tutorial Arduino e le stringhe II

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.codice string arduino

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

Important!


Gentilmente NON incollare sketch nei commenti, usa la casella info del blog che trovi nella pagina contatti.ù

Ti è stato utile questo articolo?
Sostienimi cliccando sugli sponsor, io potrò continuare ad acquistare materiale per scrivere articoli e aiutarti nei tuoi progetti.

Basta un solo click al giorno.

Be Sociable, Share!

2 comments

  1. Marco

    Ciao Mauro,
    vorrei ringraziarti per la chiarissima spiegazione !
    Complimenti per l’analisi dettagliata.
    Buon lavoro anche a te !
    Marco

  2. jcamma

    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!

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>