entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Imprimir código QR en una impresora POS Epson TM mediante php

Hola a todos: Alguien logró imprimir código QR en una impresora POS (Fiscales) Epson TM mediante php? Cual es la secuencia de comandos ESC? El manual es muy confuso y no da un ejemplo de como generar la imagen QR y como imprimirla, tampoco como imprimir una imagen, ya que solo se documenta la impresión de logotipos previamente guardados en la memoria de la impresora, pero no hay ningún ejemplo para imprimir una imagen en tiempo de ejecución. Se agradece cualquier orientación de antemano.

0voto

Leonardo-Tadei comentado

De cual de todos los modelos fiscales de Epson?
De qué país? (las ROM varían según las disposiciones fiscales de cada país y región)

0voto

ignacioguillen comentado

Hola Leonardo, gracias por responder. Es para una Epson TM-T88V y vivo en Bolivia, Latinoamerica. Ya imprimo facturas desde php con ESC-POS, pero no logro establecer la secuencia correcta. Intente seguir lo publicado en epson-biz.com pero sin resultado. Este es el codigo:

    if(($handle = @fopen("LPT1", "w")) === FALSE){
    die('I can't print, check your connection');
}

fwrite($handle,chr(27). chr(64));//restart    
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(33). chr(8));
fwrite($handle, chr(27). chr(97). chr(1));
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));
fwrite($handle, chr(27). chr(32). chr(3));
fwrite($handle," No 1005 ");
fwrite($handle, chr(27). chr(32). chr(0));
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(33). chr(8));
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(100). chr(1));
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(3));
// to here work, but the rest is the problem:
    fwrite($handle, chr(29).chr(40).chr(107).chr(4).chr(0).chr(49).chr(65).chr(50).chr(0));  // Function 165
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(67).chr(20)); // Function 167 
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(69).chr(48)); // Function 169
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(80).chr(48)); // Function 180
    fwrite($handle,"TEXTO DE PRUEBA DE CODIGO QR");  // this text go to QR
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(81).chr(48)); //Function 181
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(82).chr(48)); //Function 182

fwrite($handle, chr(27). chr(100). chr(6));
fwrite($handle, chr(29). chr(86). chr(1));// cut paper

fclose($handle); 
$exitmsj = shell_exec('lpr LPT1');

Pero no imprime el QR. Esta es la referencia de epson-biz.com en la que base el codigo de arriba:

https://docs.google.com/document/d/1JLezV4cOZENEW_NVC8WE6KrYu1Dx4KKWaJvCOU1IhUk/edit?usp=sharing

Muchísimas gracias por cualquier orientación que me guíe a la solución.

Un cordial saludo

0voto

ignacioguillen comentado

Hola Leonardo, gracias por responder. Es para una Epson TM-T88V y vivo en Bolivia, Latinoamerica. Ya imprimo facturas desde php con ESC-POS, pero no logro establecer la secuencia correcta. Intente seguir lo publicado en epson-biz.com pero sin resultado. Este es el codigo:

  if(($handle = @fopen("LPT1", "w")) === FALSE){
    die('I can't print, check your connection');
}

fwrite($handle,chr(27). chr(64));//restart    
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(33). chr(8));
fwrite($handle, chr(27). chr(97). chr(1));
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(1));
fwrite($handle, chr(27). chr(32). chr(3));
fwrite($handle," No 1005 ");
fwrite($handle, chr(27). chr(32). chr(0));
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(33). chr(8));
fwrite($handle, chr(27). chr(100). chr(0));
fwrite($handle, chr(27). chr(100). chr(1));
fwrite($handle,"=================================");
fwrite($handle, chr(27). chr(100). chr(3));
// to here work, but the rest is the problem:
    fwrite($handle, chr(29).chr(40).chr(107).chr(4).chr(0).chr(49).chr(65).chr(50).chr(0));  // Function 165
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(67).chr(20)); // Function 167 
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(69).chr(48)); // Function 169
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(80).chr(48)); // Function 180
    fwrite($handle,"TEXTO DE PRUEBA DE CODIGO QR");  // this text go to QR
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(81).chr(48)); //Function 181
    fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(82).chr(48)); //Function 182

fwrite($handle, chr(27). chr(100). chr(6));
fwrite($handle, chr(29). chr(86). chr(1));// cut paper

fclose($handle); 
$exitmsj = shell_exec('lpr LPT1');

Pero no imprime el QR. Esta es la referencia de epson-biz.com en la que base el codigo de arriba:

https://docs.google.com/document/d/1JLezV4cOZENEW_NVC8WE6KrYu1Dx4KKWaJvCOU1IhUk/edit?usp=sharing

Muchísimas gracias por cualquier orientación que me guíe a la solución.

Un cordial saludo

0voto

Leonardo-Tadei comentado

Hola Ignacio,
yo estoy en Argentina, y las impresoras fiscales Epson no usan una variante de ESC/2 para imprimir, sino una serie de comandos fiscales para interactuar con la memoria fiscal según los requisitos del AFIP homologados por el INTI... es decir, nunca he usado una impresora ni ticadora fiscal de esa manera :-(

0voto

ignacioguillen comentado

Muchas gracias por tu intención de ayudar que es lo que cuenta, espero que alguien más de la comunidad pueda orientarme con mi problema. Saludos.

1 Respuesta

3votos

SebastianCba Puntos500

Hola Amigo ignacioguillem, la solucion esta en la linea de del comando :

fwrite($handle, chr(29).chr(40).chr(107).chr(3).chr(0).chr(49).chr(80).chr(48));

para que funcione debes enviar la cadena de caracteres al final del mismo comando osea luego del chr(48) y Ademas y muy importante en el cuarto parametro que ahora estas enviando el chr(3) tenes que mandar ahi el tamaño del texto mas 3. Es decir si la cadena tiene 48 caracteres ahi va un chr(51).
Ami me funciono perfecto.
Saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta