Estoy escribiendo una biblioteca C para microcontroladores PIC18 que se comunicarán con el chip ESP8266 a través del bus UART. Me gustaría usar la printf()
función para enviar cadenas formateadas al chip.
En XC8, printf()
utiliza la función putch()
que el usuario debe definir como salida. De esta forma, el usuario puede decidir si usar UART, LCD, ... para stdout.
Esto me da un problema. En la biblioteca, quiero usar printf()
la que se basa en putch()
, pero no puedo (no debo) declarar putch()
en la biblioteca porque eso generaría un conflicto cuando un usuario quiera usar el ESP8266 en combinación con una pantalla LCD para la que ya definió putch()
. ¿Como puedó resolver esté problema?
Podría usar sprintf()
para almacenar temporalmente la cadena en la memoria y luego escribir mi propio código para escribir este byte por byte en el ESP, pero prefiero no hacerlo debido a la ineficiencia de la memoria y el tiempo.
También podría lanzar el mío esp8266_printf()
con una funcionalidad limitada y usarlo en su lugar, pero eso tampoco se siente tan bien.
¿Hay una solución limpia (er) para esto?
Puede crear un PUTCH personalizado que decida en tiempo de ejecución qué hacer con el byte. Esto se basaría en una configuración global que usted mantenga. Cambiaría la configuración global para enrutar a los personajes a donde quiera que vayan en ese momento. Uno de ellos puede ser la rutina de un cliente, aunque tendría que llamarse de otra forma que no sea PUTCH.
usuario17592
Ignacio Vázquez-Abrams
fprintf()
disponible?usuario17592