Convertire sub string in intero

ho una stringa così composta “12#1” cioè un numero intero compreso tra 0 e 23, un cancelletto, ed uno 0 o un 1.

devo seprare la stringa nelle due parti che chiamo, indirizzo e comando… faccio così;

 int posizione; byte indirizzo, azione;
              for( int i = 1; i <= indiceComando; i++)
                 {posizione = comando[i].indexOf("#");
                    indirizzo  = atoi (comando[i].substring(0, comando[i].indexOf("#")));
                    azione     = atoi (comando[i].substring(comando[i].indexOf("#")+1));
                    Serial.print("\n"); Serial.print("indirizzo:"); Serial.print(comando[i].substring(0, comando[i].indexOf("#")));Serial.print("   azione:");    Serial.print(comando[i].substring(comando[i].indexOf("#")+1));
                  }

ma atoi non funziona… mi da quest’errore in fase di compilazione:
DecoderDTMF6.cpp: In function ‘void rilevaStringaDTMF()’:
DecoderDTMF6:80: error: cannot convert ‘String’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’
DecoderDTMF6:81: error: cannot convert ‘String’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’

la separazione delle stringhe è giusta perchè se commento le due righe
// indirizzo = atoi (comando_.substring(0, comando*.indexOf("#")));_
// azione = atoi (comando_.substring(comando.indexOf("#")+1));*
la stampa su seriale è perfetta, nel separare la componente indirizzo dalla componente azione.
suggerimenti???
devo necessariamente passare attraverso un’altra stringa prima di utilizzare il metodo atoi???
grazie_

Ciao Paolo, se posso darti un suggerimento, sposta il Topic nella nuova sezione software, è la sua collocazione ideale, poi questo lo elimini.