Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Secuencia de Escape en Epson TM88III (https://www.clubdelphi.com/foros/showthread.php?t=9184)

Nose 16-04-2004 16:01:03

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

guillotmarc 16-04-2004 17:51:43

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.

guillotmarc 16-04-2004 17:58:52

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.

roman 16-04-2004 17:58:56

Cita:

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

Hombre, ¡qué gusto! Y, ¿antes quien eras?

// Saludos

Nose 16-04-2004 18:08:33

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

jachguate 16-04-2004 18:21:02

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.

;)

Julià T. 16-04-2004 23:05:27

Creo que la impresora citada tiene drivers para windows.
No sé si utilize la TM88 o TMT88

Nose 16-04-2004 23:09:33

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

Julià T. 17-04-2004 04:43:51

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

Nose 17-04-2004 19:19:21

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.

Julià T. 18-04-2004 04:54:39

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

Julià T. 18-04-2004 04:59:22

por cierto el Rave (el reporteador que viene por defecto en elphi 7) tiene para imprimir códigos de barra

Nose 19-04-2004 18:10:25

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

molinero1 15-06-2007 12:41:45

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.

Nose 15-06-2007 17:36:45

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 :D

xio 12-11-2007 17:44:20

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.

xio 12-11-2007 17:45:14

Se me olvidó decir que yo intento imprimir un codigo de barras del tipo EAN13.

xio 12-11-2007 18:14:17

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;

xio 12-11-2007 18:29:48

Ya lo he consegido!

caifan_0883 19-03-2008 20:02:51

Woow, Probare haber si me funciona. Saludos


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

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