Hola
He implementado en un ESP01s un sistema NTP para controlar la hora vía internet. La exactitud no es problema.
Pero para mostrar la hora, uso strftime con este formato strftime(time_output, 50, "%a %d-%m-%y %T\r\n", localtime(&now));
El resultado es algo como
Error de conexión: Tue 07-12-21 11:31:25
Fin de error: Tue 07-12-21 11:34:01
He buscado dentro de las librerías por si pillo el archivo que contenga los días de la semana en inglés, (time.h) pero strftime no me hace caso al traducirlas.
¿Alguna idea de como traducirlo?
Ya sé que usando timeinfo.tm_wday puedo hacerlo, pero prefiero pelearme con strftime a modo de reto
Saludos
PD: ya han vuelto a cambiarlo todo. Así no hay quien publique nada
Creo que strftime() depende de locale.h y toma de ahí los días por eso no le afecta que cambies las cadenas en time.h.
El tema sería ajustar locale.h a tu zona, creo que debes buscar por ese lado.
C:\Users\surby\AppData\Local\Temp\ccxjO3LV.ltrans0.ltrans.o: In function `main':
<artificial>:(.text.startup+0x126): undefined reference to `setlocale(int, char const*)'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\nanoatmega328\firmware.elf] Error 1
========================================== [FAILED] Took 1.82 seconds ==========================================El proceso del terminal "C:\Users\surby\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload', '--environment', 'nanoatmega328'" finalizó con el código de salida 1.
No encuentra setlocale() asi que asumo que no existe.
Hay muy poca info para Arduino del tema.
Si funcionara setlocale entonces este link te serviría
Gatul: No he podido encontrar nada en todo el disco duro que contenga 'Monday'. Dlls y exes a montones, pero creo que esos no se compilan. Es posible que locale.h tenga relación. Lo estudio
Surbyte: El ejemplo estaba al principio del post con la respuesta. Lo que has puesto en la segunda respuesta estuve probándolo. Funciona en C++ para windows y para PHP, pero en arduino.....
Veremos si encuentro alguna otra forma. Me pondré a estudiar locale y veremos
Buff. Eso se me escapa de las manos. Creía que se podría actualizar algo de alguna librería para pasarlo a español, pero veo que no. Además, lo hago solo por diversión. Voy a probar a modificar dlls a ver si la pillo
Y muy agradecido por encontrar algo. Tu ayuda siempre es muy bienvenida.
Como está compilado en un ESP, me voy a liar a buscar dlls del entorno 8266 con el string Monday y cambiarlo por Lunes. Compilar y probar. Bueno, cada día con su nombre. Veremos hasta donde llego.
Gracias Surbyte por este tema y sobre todo por la inestimable ayuda que prestas a todo el mundo aunque a veces no te lo reconozcan
Los de 3 caracteres no hay problema, pero los nombres completos se solapan y el programa los muestra cortados.
Iré ajustándolos poco a poco y veremos.
La otra opción es buscar ese lib y compilarlo en español
Saludos
PD: ese lib pertenece al ESP2866. Supongo que en el ide estará el original de arduino
He modificado con un editor HEX el archivo libc.a y después comprobado que los textos salen correctamente (unas 7 u 8 pruebas)
Ahora lo que quisiera es modificar el archivo origen. Por internet no encuentro donde está el origen de la librería.
Si Gatul, por eso digo que hice 7 u 8 pruebas. Se ve que el offset de inicio es fijo para cada string.
Era un pequeño reto, DanX3. Mejor dicho, ES. En cuanto me vuelva a poner, me lanzo a buscar el archivo fuente del libc de arduino
Pues ya he localizado el AVR-libc oficial, aunque tengo dudas que sea el real que usa el ESP.
Si alguien quiere investigar alguna otra función, ahí va el link: avr-libc
He visto algunas funciones en C puro, pero la strftime y como copia los strings me ha hecho explotar el cerebro. Lo estudio a ver si puedo sacarle algo de jugo