Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2007
Avatar de Cecil
Cecil Cecil is offline
Miembro
 
Registrado: may 2007
Posts: 97
Poder: 17
Cecil Va por buen camino
Problema con codigos de escape

Hola a todos, tengo un problema, y es que mi impresora de tickets (SAMSUNG BIXOLON SRP-275) al imprimir, lo hace y termina con medio papel dentro, con lo que tengo que darle al botoncito para que vaya sacando el rollo y finalmente cortarlo. Pero me gustaría hacerlo a través de códigos de escape, que no son cosa sencilla porque directamente no me sale . Os pego el código que uso:

Código:
type
  TDatos = Record
  nLong : Integer;
  bDatos : Array[0..255] of byte;
end;

procedure CodigoEscape(sImpresora: String; sCodigo: String);
var
  PtImpresora: TPrinter;
  DtCadena : TDatos;
Begin
  PtImpresora := TPrinter.Create;
  try
    PtImpresora.PrinterIndex := PtImpresora.Printers.IndexOf( sImpresora );
    PtImpresora.BeginDoc;
    DtCadena.nLong := Length( sCodigo );
    StrPCopy( @DtCadena.bDatos, sCodigo );
    Escape( PtImpresora.Handle, PASSTHROUGH, 0, @DtCadena, nil );
    PtImpresora.EndDoc;    
  finally
    FreeAndNil( PtImpresora );
  end;
end;
Simplemente no funciona, y me gustaría saber si hago algo mal, o no se. Un saludo y mil gracias.
__________________
"There is nothing either good or bad, but thinking makes it so" William Shakespeare.
Responder Con Cita
  #2  
Antiguo 06-08-2007
jmb1963 jmb1963 is offline
Registrado
 
Registrado: mar 2007
Posts: 9
Poder: 0
jmb1963 Va por buen camino
Thumbs up

Hola,
por que no lo haces mas simple..

yo lo utilizo mas menos asi:

AssignFile(MyFile, iPtoImpVal ); // (Para la LPT1)
reset( MyFile );
rewrite(MyFile);

write(MyFile,Chr(27) + chr(64)); // resetea impresora;

write(MyFile, Chr(29)+ Chr(104)+ Chr(100)); // Altura barras
write(MyFile, sP1, Chr(29)+ Chr(119)+ Chr(2)); // Ancho codigo
write(MyFile, Chr(29)+ Chr(72)+ Chr(2)); // Posision codigo barras
write(MyFile, Chr(29)+ Chr(107)+ Chr(4)+ sEstacion + sNVale + Chr(0)); // Codigo
write(MyFile, Chr(27)+ Chr(97)+ Chr(0));


write(MyFile, Chr(27)+ Chr(33)+ Chr(16)); // Doble alto - On
write(MyFile, 'Total........: ' + Justifica( Picture(SoloNumeros(FloatToStr(iTotal),0)), 'D', 10 )+'.-');
write(MyFile, Chr(27)+ Chr(33)+ Chr(8)); // Doble alto - Off

// Pre-Corta vale
if ( sCortaBarra = '1' ) then
Incl( 1, sP1, chr(29)+chr(86)+ chr(49)); // Corta Papel

// Abre la Gabetera conectada a la impresora de Boletas
Incl( 0, sP1, Chr(27)+Chr(112)+'0'+'0'+'0' );


la funcion Incl(, .. es una funcion propia en la cual envio un estado para validar si salta o no de linea, el puerto sobre el cual imprimira.. y el resto de los caracteres son historia.. (comandos de impresion).

Espero que estos ejemplos te sirvan.

Saludos

Jose Miguel B.
Responder Con Cita
  #3  
Antiguo 07-08-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
en lo personal se me hace un desperdicio mandar saltos de linea para que suba el papel, porque no mejor imprimes una parte o todo el encabezado del que seria el nuevo ticket y asi no desperdicias tanto papel?
Responder Con Cita
  #4  
Antiguo 07-08-2007
jmb1963 jmb1963 is offline
Registrado
 
Registrado: mar 2007
Posts: 9
Poder: 0
jmb1963 Va por buen camino
Wink

Hola.

Cuando hablo de salto de linea no me referia al papel. sino a la forma de imprimir.

si voy a imprimir uno o varios codigos de escape lo escrivo asi:

Incl( 0, sP1, Chr(27)+ Chr(33)+ Chr(8)); // Doble alto - Off
Incl( 0, sP1, Chr(27)+ Chr(69)+ Chr(0)); // Negrita - Off
Incl( 0, sP1, Chr(27)+ Chr(77)+ Chr(1)); // Comprimida On (Samsung)

... procesa los tres codigos y no mueve ni el cabezal, ni el papel. En cambio si deseo imprimir:

Incl( 1, sP1, 'Sub-Total....: ' + Justifica( Picture(SoloNumeros(FloatToStr (iTotal),nDecimal)), 'D', 10 )+'.-');

Incl( 1, sP1, 'Descuento....: ' +
Justifica( Picture(SoloNumeros(FloatToStr(itDescto),0)), 'D', 10 )+'.-');

Incl( 1, sP1, 'Total........: ' + Justifica( Picture(SoloNumeros(FloatToStr(iTotal),0)), 'D', 10 )+'.-');

Incl( 1, sP1, ' * * * ' );
Incl( 1, sP1, 'COMPROBANTE VALIDO SOLO PARA USO INTERNO' );
Incl( 1, sP1, 'NO VALIDO PARA RETIRO DE MERCADERIA.' );
Incl( 1, sP1, ' * ' );

imprime y salta, para imprimir la siguiente linea.

Saludos
Jose Miguel B.
Responder Con Cita
  #5  
Antiguo 08-08-2007
Avatar de martinzcr
martinzcr martinzcr is offline
Miembro
 
Registrado: jun 2006
Ubicación: San Jose, Costa Rica
Posts: 53
Poder: 18
martinzcr Va por buen camino
Hola!

Lo que puedes hacer es agregar en la configuración una opción para que el usuario defina la cantidad de lineas libres al final del ticket. Esto te va a servir luego si cambias de impresora ya que algunas tienen el core más arriba o mas abajo. Yo lo manejo así y al final del ticket agrego algo así

Código Delphi [-]
for n:=1 to nLineasPie do
     Writeln(prn, ' ');

Espero que te sirva. Saludos
__________________
Martin Zalazar
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Imprimir etiqueta con codigos escape comba Impresión 6 05-08-2006 12:11:49
codigos escape bernat_f Impresión 4 17-06-2006 18:27:57
Codigos Escape Impresora Sansumg serhasae Varios 3 05-09-2005 10:40:17
Codigos de escape con Zreport Sick boy Impresión 0 22-07-2005 12:27:13
Codigos de escape jsanchez Impresión 1 17-05-2003 13:54:00


La franja horaria es GMT +2. Ahora son las 04:57:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi