Hola a todos,
soy principiante en programación de Arduino, usando Arduino IDE.
Tengo el siguiente problema creando un archivo cuyo nombre sea el resultado de unir un código alfanumérico leido de una etiqueta RFID con la fecha.
Uso arreglo de carateres pues para generar la parte del nombre correspondiente a la fecha uso la función"sprintf()", con los datos de un RTC.
Para concatenar ambos arreglos uso un Loop For.
Aparentente todo funciona y se genera el nombre correctamente, sinembargo al tratar de crear el archivo con dicho nombre este sólo queda con la parte correspondiente al primer arreglo que contiene el código de la etiqueta e ignora la parte de la fecha.
Descubrí que la cadena de caracteres del código leído de la etiqueta RFID contiene al final un CR que no he podido quitarlo y no se de dónde aparece.
Intuyo que si uso Strings la concatenación puede funcionar, pero no lo he logrado
Sabe alguien cómo hacerlo con Strings? Existe una función similar a sprintf que use un String y no una cadena de caracteres?
Aqui la función en donde estoy haciendo lo anterior. "Tag" es un arreglo de caracteres char Tag[8] que defino como variable global.
void callback_function(esp_spp_cb_event_t event, esp_spp_cb_param_t *param) {
if (event == ESP_SPP_START_EVT) {
Serial.println("Inicializado SPP");
}
else if (event == ESP_SPP_SRV_OPEN_EVT ) {
Serial.println("Cliente conectado");
digitalWrite(ledWrite,HIGH);
}
else if (event == ESP_SPP_CLOSE_EVT ) {
Serial.println("Cliente desconectado");
digitalWrite(ledWrite,LOW);
}
else if (event == ESP_SPP_DATA_IND_EVT ) {
char c;
int i=0;
while (BT.available()) // Mientras haya datos por recibir
{ c = BT.read();
if(c != '#'){
Tag+=c;
i++;
}
}
int len;
len = i
char filenameExt[40];
filenameExt[0]= '/';
for (int i=1; i<len; i++)
{
filenameExt[i]=Tag[i-1];
}
Serial.print("Recibido: ");
DateTime now = rtc.now();
sprintf(filename,"_%4d-%02d-%02d %02d_%02d_%02d.csv",now.year(),now.month(),now.day(),now.hour(),now.minute(),now.second());
for (int i=0; i<=25; i++)
{
filenameExt[i+len]=filename[i];
}
checkFile(SD, filenameExt); //esta función crea el archivo con nombre "filenameExt"
}
}