Estoy intentando extraer entradas de una cadena en un Arduino.
Estoy usando Esta biblioteca DCF77 (.zip) y obtengo una fecha y hora en este formato:
DCF77DATA 2012012531819CET
Esto traduce ito
DCF77DATA YYYYMMDDwhhmmTZ
con Y, M, D siendo la fecha, w el día de la semana yh y m son la hora. Esto siempre se genera en el minuto completo, por lo que se puede esperar que los segundos sean 0.
He estado intentando varias formas de obtener las horas y los minutos (la fecha no me concierne en este momento) y ponerlos en variables int. El último método que probé se ve así:
const char *v = dcf77.getDateTime();
if (strcmp (v,"DCF77POLL") != 0) {
Serial.println(v);
String time = String(v);
// DCF77DATA 2012012531819CET
char h_str[3];
time.substring(19,20).toCharArray(h_str, 2);
Serial.print("H: ");
Serial.println(h_str);
char m_str[2];
time.substring(21,23).toCharArray(m_str, 2);
Serial.print("M: ");
Serial.println(m_str);
int hours = atoi(h_str);
int minutes = atoi(m_str);
}
Esto produce un resultado interesante ... Obtengo el primer número del tiempo. Cuando son "23" minutos, obtengo "2", de ahí el h_str [3]. Pensé que estaba relacionado con la cadena terminada en 0, pero no ayudó. Lo mismo para la hora.
Además, cuando trato de imprimir el int no obtengo ningún resultado en la consola serie, parece que el programa simplemente se detiene.