Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2004
Nose Nose is offline
Miembro
 
Registrado: abr 2004
Ubicación: Chile
Posts: 66
Poder: 21
Nose Va por buen camino
Question Secuencia de Escape en Epson TM88III

Hola a todos!

Estoy de nuevo por acá, con otro nick eso sí.

Remitiendome al problema descargué de la page de la epson el faq de las secuencias de escapes de la Epson TM88III y tengo problemas para entender algunas especificaciones de él y ademas de adaptar el código que esta en basic:

Código:
PRINT #1, CHR$(&H1B);"@"; 'Initializes the printer (ESC @)
PRINT #1, CHR$(&H1B);"a";CHR$(1);'Specifies a centered printing position 
                                                 '(ESC a)
PRINT #1, CHR$(&H1B);"!";CHR$(0); 'Specifies font A (ESC !)
PRINT #1, "January 14, 2002 15:00";
PRINT #1, CHR$(&H1B);"d";CHR$(3); 'Prints and 3 line feeding (ESC d)
PRINT #1, CHR$(&H1B);"a";CHR$(0); 'Selects the left print position (ESC a)
PRINT #1, CHR$(&H1B);"!";CHR$(1); 'Selects font B
PRINT #1, "TM-U210B $20.00";CHR$(&HA);
PRINT #1, "TM-U210D $21.00";CHR$(&HA);
PRINT #1, "PS-170 $17.00";CHR$(&HA);
PRINT #1, CHR$(&HA); 'Line feeding (LF)
PRINT #1, CHR$(&H1B);"!";CHR$(17); 'Selects double-height mode
PRINT #1, "TOTAL $58.00"; CHR$(&HA);
PRINT #1, CHR$(&H1B);"!";CHR$(0); 'Cancels double-height mode
PRINT #1, "------------------------------";CHR$(&HA);
PRINT #1, "PAID $60.00";CHR$(&HA);
PRINT #1, "CHANGE $ 2.00";CHR$(&HA);
PRINT #1, CHR$(&H1D);"V";CHR$(66);CHR$(0); 'Feeds paper & cut
?Drawer Kick (ESC p)
PRINT #1, CHR$(&H1B); CHR$(&H70); CHR$(&H0); CHR$(60); CHR$(120);
Esta instrucción, por ejemplo :
Código:
 PRINT #1, CHR$(&H1B);"a";CHR$(1);
¿cómo puedo convertirla en Delphi?

Esto no me resulta:
Código:
PRINT #1, CHR$(&H1B);"a";CHR$(1);
PRINT #1, CHR$(&H1B);"!";CHR$(0); 'Specifies font A (ESC !)
PRINT #1, "January 14, 2002 15:00";
lo convertí en:
Código:
Writeln ( f, #27 + 'a' + #49 );  
Writeln (f, #27 + '!' + #48 );
Writeln (f, "January 14, 2002 15:00" );
Supuestamente lo que hace es centrar lo que se va escribir después, pero no resulta, simplemente aparece justificado a la izquierda

Después, intento convertir:
Código:
PRINT #1, CHR$(&H1B);"d";CHR$(3);
Esto imprime 3 saltos de líneas (ESC d), supuestamente, pero no lo hace

Código:
 Writeln ( f, #27 + 'd' + #50);
Alguién puede ayudarme a convertirlo a Delphi todo este código, además de la secuencia de escape para imprimir código de barra que en el manual sale así, pero no se cómo interpretarlo:

Código:
? GS k m d1...dk NUL ? GS k m n d1...dn [Name] Print bar code [Format] ASCII ?GS k m d1...dk NUL Hex ?1D 6B m d1...dk 00 Decimal ?29 107 m d1...dk 0 ASCII ?GS k m n d1...dn Hex ?1D 6B m n d1...dn Decimal ?29 107 m n d1...dn [Range] ? 0 ? m ? 6 (k and d depend on the bar code system used) ? 65 ? m ? 73 (n and d depend on the bar code system used) [Description] Selects a bar code system and prints the bar code.
Para el Codebar39 "m" = 4 el rango de "k" es 1<=k y el rango de "d" es 48 ? d ? 57,65 ? d ? 90, d = 32,36,37,43,45,46,47

Así que debería ser algo así :
Código:
Writeln ( f, #29 + #107 + '4' + '12345678' );
Pero, para variar no me resulta.

si alguien se apiade y me expliqué lo que estoy haciendo mal.

Gracias
Responder Con Cita
  #2  
Antiguo 16-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

En Basic, &H significa que el numero a continuación está en decimal. Por lo que CHR$(&H1B); equivale a CHR$(27); (1B es 27 en Hexadecimal).

Dicho esto, la línea

Código:
 
PRINT #1, CHR$(&H1B);"a";CHR$(1);
Equivale a

Código:
Writeln ( f, #27 + 'a' + #1 );
(Habías traducido mal CHR$(1) que equivale a #1).

Espero que estas indicaciones, te ayuden a traducir el código VB. En lo que respecta al Código Barras, la verdad es que tampoco entiendo la notación en que viene.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 16-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Aunque en el código de barras, parece haber olvidado un 0 al final. Y m lo enviaría como nº y no como el ASCII del nº. Lo que no sé es si también es necesario para los nº que forman el código.

O sea, en lugar de :

Writeln ( f, #29 + #107 + '4' + '12345678' );

Probaría :

Writeln ( f, #29 + #107 + #4 + '12345678' + #0 );

O también (si no funciona) :

Writeln ( f, #29 + #107 + #4 + #1 + #2 + #3 + #4 + #5 + #6 + #7 + #8 + #0 );

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 16-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Nose
Estoy de nuevo por acá, con otro nick eso sí.
Hombre, ¡qué gusto! Y, ¿antes quien eras?

// Saludos
Responder Con Cita
  #5  
Antiguo 16-04-2004
Nose Nose is offline
Miembro
 
Registrado: abr 2004
Ubicación: Chile
Posts: 66
Poder: 21
Nose Va por buen camino
Gracias guillotmarc, probaré esas soluciones.


Cita:
Hombre, ¡qué gusto! Y, ¿antes quien eras?
Jejeje! Roman, es que tuve problemas con algunos integrantes que ya no están ahora, menos mal, pero luego de dos años desaparecido por estos lares .... he vuelto

Salu2
Responder Con Cita
  #6  
Antiguo 16-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
solo añadir, que me parece que es posible no tener que convertir los valores hexadecimales a decimales... ya que también debiera valerse un #$1B por ejemplo, en lugar de #27... no tengo delphi a mano, para probarlo, pero debiera funcionar y podria eviatar la conversión.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 16-04-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
Creo que la impresora citada tiene drivers para windows.
No sé si utilize la TM88 o TMT88
Responder Con Cita
  #8  
Antiguo 16-04-2004
Nose Nose is offline
Miembro
 
Registrado: abr 2004
Ubicación: Chile
Posts: 66
Poder: 21
Nose Va por buen camino
Cita:
solo añadir, que me parece que es posible no tener que convertir los valores hexadecimales a decimales... ya que también debiera valerse un #$1B por ejemplo, en lugar de #27... no tengo delphi a mano, para probarlo, pero debiera funcionar y podria eviatar la conversión.
No se me había ocurrido usar #$, pensé que no se podía con Delphi

Cita:
Creo que la impresora citada tiene drivers para windows.
No sé si utilize la TM88 o TMT88
Sí, si tiene Drivers para todos los sist. Op. de windows

Salu2
Responder Con Cita
  #9  
Antiguo 17-04-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
Cita:
Sí, si tiene Drivers para todos los sist. Op. de windows
entonces le puedes asignar un tipo de fuente que se llama 'control' que combinado con el texto tendria que realizar la misma funcion que $1B
Responder Con Cita
  #10  
Antiguo 17-04-2004
Nose Nose is offline
Miembro
 
Registrado: abr 2004
Ubicación: Chile
Posts: 66
Poder: 21
Nose Va por buen camino
Hola, Julià T.

Cita:
entonces le puedes asignar un tipo de fuente que se llama 'control' que combinado con el texto tendria que realizar la misma funcion que $1B
Eso no sé cómo hacerlo, es más intenté al comienzo usar la unit printer, pero no me resultaba la mayoría de las cosas, cómo el alineamiento de líneas, fuentes, etc.
Responder Con Cita
  #11  
Antiguo 18-04-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
Puede hacer una prueba sencilla para ver si funciona en esta impresora

Asignas como impresora predeterminada la epson tm88iii (para que salgan los tipos de fuentes própios de esta impresora)
Abres el wordpad, escribes texto y en algún sitio colocas el texto con la fuente control. Le das a imprimir y compruebas el resultado.

En esta impresora no lo probé nunca de hacerlo así, ya que utilizé para esta impresora el TRichEdit, el Qreport, y el Rave, con lo que me ahorré un montón de código

Tan solo añadir que lo afecta sorprendentemente a esta impresora es la combinación de fuente y tamaño a la hora de imprimir
Responder Con Cita
  #12  
Antiguo 18-04-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
por cierto el Rave (el reporteador que viene por defecto en elphi 7) tiene para imprimir códigos de barra
Responder Con Cita
  #13  
Antiguo 19-04-2004
Nose Nose is offline
Miembro
 
Registrado: abr 2004
Ubicación: Chile
Posts: 66
Poder: 21
Nose Va por buen camino
Thumbs up

Bueno gracias a todos por tratar de ayudar :-)

lo sulucioné de la sgte. manera para el código de barra:

Código:
  
  Writeln ( lst, #$1B + '@'  );
  Write ( lst, #$1D + 'h' + #$40  ); //  Setea el alto
  Write ( lst, #$1D + 'w' + #$2  );  //  Setea el tamaño del ancho a 5
  Write ( lst, #$1D + 'H' + #$2  );  //  Seleccion la posición a imprimir
  // codigo de barrras CODE39 -> ese es el tipo #$4
  Write ( lst, #$1D + 'k' + #$4 );   //  Imprime codigo de barras
  Write ( lst, '1234567890123' + #$0 ); // siempre acaba con nulo
  Write ( lst, #$A  ); // limpia la justificación
Saludos
Responder Con Cita
  #14  
Antiguo 15-06-2007
molinero1 molinero1 is offline
Miembro
 
Registrado: abr 2007
Posts: 59
Poder: 18
molinero1 Va por buen camino
Anda ya

La fuente de 'control' no aparece bajo ningún concepto, pongas la impresora como predeterminada o como si la pones sin conexión. Así que la única forma es programando porque si no no hay manera.
Responder Con Cita
  #15  
Antiguo 15-06-2007
Nose Nose is offline
Miembro
 
Registrado: abr 2004
Ubicación: Chile
Posts: 66
Poder: 21
Nose Va por buen camino
Cita:
Empezado por molinero1
La fuente de 'control' no aparece bajo ningún concepto, pongas la impresora como predeterminada o como si la pones sin conexión. Así que la única forma es programando porque si no no hay manera.
Gracias, y has resucitado un post después de tres años
Responder Con Cita
  #16  
Antiguo 12-11-2007
xio xio is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
xio Va por buen camino
Necesito ayuda urgente!!!!!!!!!!!!!

Tengo el mismo problema que tuviste tu hace 3 años. Yo estoy intentando dominar la impresora EPSON TM-L-60II, y no lo consigo. He visto este hilo y parece que puede ayudarme aunque no lo he probado. Trabajo con Delphi 4 y he probado el codigo que a ti te sirvio como solucion y nada. Espero que podais ayudarme por que de verdad que ya no se que hacer.
Responder Con Cita
  #17  
Antiguo 12-11-2007
xio xio is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
xio Va por buen camino
Se me olvidó decir que yo intento imprimir un codigo de barras del tipo EAN13.
Responder Con Cita
  #18  
Antiguo 12-11-2007
xio xio is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
xio Va por buen camino
Este es el codigo que utilizo para imprimir el codigo de barras
Código SQL [-]
AssignFile(f,'com2');
try
Rewrite(f);
Writeln ( f, #$1D + 'f' + #$1 ); //Esto es para seleccionar el tipo de caracteres HRI
Writeln ( f, #$1D + 'h' + #$20  ); //  Setea el alto
Writeln ( f, #$1D + 'w' + #$2  );  //  Setea el tamaño del ancho a 5
Writeln ( f, #$1D + 'H' + #$2  );  //  Seleccion la posición a imprimir
//EAN13 -> #$2
Writeln ( f, #$1D + 'k' + #$2 );   //  Imprime codigo de barras
Writeln ( f, '2690162200004' + #$0 ); // siempre acaba con nulo     
finally
CloseFile(f);
end;
Responder Con Cita
  #19  
Antiguo 12-11-2007
xio xio is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
xio Va por buen camino
Ya lo he consegido!
Responder Con Cita
  #20  
Antiguo 19-03-2008
caifan_0883 caifan_0883 is offline
Miembro
 
Registrado: nov 2005
Ubicación: Los Mochis, Mexico
Posts: 42
Poder: 0
caifan_0883 Va por buen camino
Woow, Probare haber si me funciona. Saludos
__________________
Da conocimiento a los que no saben.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 01:14:41.


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