Hola a todos,
En primer lugar pedir disculpas si no es el foro más adecuado porque el dispositivo que estoy utilizando no es un Arduino, sino un ESP32, en concreto un Lilygo TTGO T-CALL Sim800L. El motivo de acudir a este foro es porque creo que el problema está en la configuración de la impresora y he visto en otros hilos que hay personas que tienen bastantes conocimientos en esta materia.
En resumen, mi problema es que solamente consigo imprimir cuando la impresora se enciende después que el ESP32. Si lo hago al revés, es decir, la impresora ya se encuentra encendida y posteriormente se enciende el ESP32, la impresora no imprime.
Utilizo SoftwareSerial para la conexión y la librería creado por docwisdom para Epson TM-T88II que hay en GitHub.
Para la conexión entre el ESP32 y la impresora utilizo un adaptador que posee un MAX3232.
En la consola se imprime en cada ciclo/loop el estado de la impresora. Cuando el dispositivo ESP32 se enciende antes que la impresora no pasa del estado offline con valor -1 (si no me confundo, creo que simplemente no hay respuesta). Sin embargo, si apago la impresora y vuelvo a encender mientras sigue el ESP32 encendido, los valores cambian hasta que el programa indica por consola que la impresora está online y manda a imprimir un ejemplo. Los valores de estado cambian y deja el -1 para mostrar el 30, 20, 0, 0 y por último el 15 antes de pasar a online e imprimir (un valor por ciclo).
No es operativo tener que acordarse de encender la impresora después que el ESP32. Como curiosidad, si el ESP32 tiene la comunicación con la impresora por respetarse el orden de encendido y se reinicia tras la compilación y subida por parte del IDE del programa, sí recupera la comunicación y vuelve a imprimir al igual que al pulsar el botón de reset. Sin embargo, si le quito la alimentación y se la vuelvo a conectar no.
He revisado la documentación de EPSON para la impresora y he probado incluso varias configuraciones de los DIP Switch. El único cambio significativo y que hace perder la comunicación por completo aunque use el truco de encender después, es Handshaking (BUSY condition) (DIP 2-1) que de fábrica trae OFF (Offline + Receive buffer full) y lo tengo que cambiar a ON (Receive buffer full) para que imprima con dicho truco.
La impresora está establecida a 9600bps, 8 bits para datos, sin paridad, 1 bit o más para stop, handshaking mediante DTR/DSR aunque entiendo que no se está utilizando al carecer de la correspondiente conexión.
La placa que posee el MAX3232 tiene dos leds, uno que indica la transmisión y otro la recepción. El de la transmisión parpadea constantemente (entiendo cada petición de estado en cada ciclo) y el de recepción solamente parpadea a la vez cuando realmente hay una comunicación del estado (si se ha respetado el orden de encendido).
La cuestión es: ¿por qué solamente responde la impresora si se enciende después que el ESP32? ¿Qué podría cambiar de la configuración para que termine de funcionar correctamente?
Una vez más, pido disculpas si no es el sitio más adecuado y también por la extensión del mensaje.
Muchas gracias a todos!