Proyecto de impresora para turnos

fmreja:
Las 2 últimas líneas que me indicas serían un problema porque no están en el conversor. No he encontrado uno como el que hay d ejemplo el foro que si incluye esas líneas

¿Y qué tal este?

Según de lo que he medio leído del manual, DTR se utiliza para indicar algún estado particular de la impresora según la situación actual; para efectos del Arduino creo que DTR va a una entrada digital simple.

Algo que no me queda claro, es si esa línea solo envía un pulso (algo que el Arduino lo deberá capturar con una interrupción externa); o es como un GPIO comandado por el programa terminal. Esto lo supongo ya que es la forma en que la IDE puede reiniciar el microcontrolador automáticamente al momento de subir un programa.

Hola de nuevo,

ya tengo la impresora en casa y he estado haciendo pruebas.

En el tema de conexión está correcto porque le envío datos y los imprime, aunque lo único que saca son caracteres raros. Supongo que esto será por que no interpreta bien lo que le envío.

He estado también liado con el manual de comandos de la impresora y la librería thermal de adafruit, pero veo que la función a la que debería tener acceso (writebytes) está en un fichero .cpp y no se si eso tendría que compilarlo después de modificarlo o sólo guardarlo. Ahora es con lo que más desorientado estoy, no se como enviarle los comandos que reconoce la impresora.

Me podríais poner algún ejemplo o indicarme como modificarlo para enviar los comandos que entiende la impresora.

Un saludo y muchas gracias

fmreja:
En el tema de conexión está correcto porque le envío datos y los imprime, aunque lo único que saca son caracteres raros. Supongo que esto será por que no interpreta bien lo que le envío.

¿No será que la impresora tiene interruptores DIP?
Según de lo que leí, estos configuran parámetros como tasa de baudios y configuración de trama (paridad, bits de parada y negociación). A ver si no es que algo ande mal por ahí...

fmreja:
He estado también liado con el manual de comandos de la impresora y la librería thermal de adafruit, pero veo que la función a la que debería tener acceso (writebytes) está en un fichero .cpp y no se si eso tendría que compilarlo después de modificarlo o sólo guardarlo. Ahora es con lo que más desorientado estoy, no se como enviarle los comandos que reconoce la impresora.

Me podríais poner algún ejemplo o indicarme como modificarlo para enviar los comandos que entiende la impresora.

¿Dices que el ejemplo de prueba de la librería no funciona con la impresora? De ser así, revisa que las configuraciones del serial coincidan; si no, quizá sea simplemente de cambiar los códigos que se envían en las distintas funciones (como la de ajustar la justificación, tamaño de la fuente, etc.) por las que tu impresora reconoce para ejecutar una acción igual o similar a la esperada. Quizá hasta quieras agregar una función pública que con solo llamarla haga el tan buscado corte del papel.

writeBytes() es una función "privada" ("oculta") de la clase; por eso no la puedes llamar así no más. Además no tiene mucha ciencia, equivale a hacer Serial.write() múltiples veces.

PD: si vas a modificar la librería, no toques el sketch A_printertest (excepto en la parte de adjuntar el puerto serial de tu elección); así sabrás cuando la modificación es exitosa y tu impresora hace justo lo que el ejemplo dice.

Bueno, ahora que está todo solucionado os comento...

Finalmente he usado una librería para la Epson TM-T88 que está disponible en el buscador del IDE. Ha sido muy directa, no he tenido que tocar nada salvo mirar las funciones que tiene. Supongo que seguirá también el estandar ESC/POS y por eso ha funcionado bien.

Un saludo y muchas gracias por vuestra ayuda.