PDA

Ver la Versión Completa : Cajón portamonedas


Motoboy
13-08-2003, 09:35:49
Hola,

Estoy intentando abrir un cajón portamonedas que está conectado a una impresora en el com2, pero no lo consigo. Según el manual de la impresora, tengo que mandarle la siguiente línea hex:

1Bpmt1t2 (<ESC>pmt1t2). Supuestamente esto genera un impulso eléctrico para que abra el cajón. yo he hecho lo siguiente.

var
s : String;
p : TPrint;
begin
. //por aquí cargo la impresora con SeTprinter .
.
BeginDoc
s := #$1B + ........ (lo puesto todo en hex, en decimal y nada).
p.Canvas.TextOut(1,1,s); //Escribo en la printer.
EndDoc;
end;

El problema es que creo que la impresora (que la puedo poner en modo de prueba hexadecimal - Es decir, que lo que se le manda te los muestra el carácter y el código hex - para el escape (1B), interpreta 2E.

La impresora es de tickets.
El comando exacto es.

COMANDO HEX
<ESC>pmt1t2. 1Bpmt1t2 (está escrito así en el manual).

En la ayuda del windows "Control de la impresora", muestran unos códigos en hex comunes para las impresoras. Hace un comentario que es siguiente. Incluir también los corchetes.

<0D> Retorno de carro.

En el código anterior, he probado a poner el 1B con corchetes, con símbolos de mayor y menos, llaves, vamos, de todo y nada.

__cadetill
13-08-2003, 11:07:50
con impresoras de tickets Epson funciona esta secuencia (almenos las TM)


s := #27 + 'p0' + #100 + #0;


Prueba a ver si hay suerte

Julià T.
13-08-2003, 21:07:25
En algunas existe la posibilidad de con el tipo de fuente control, realizar funciones de este tipo

ej: fuente Control y el Caracter 'A','B' o 'C' abre el cajón portamonedas (con diferentes tiempos de por medio)

Motoboy
14-08-2003, 21:13:42
Ya he conseguido imprimir y abrir el cajón. Pero no consigo imprimir con las funciones que me habéis comentado. Cómo imprimo el buffer en la impresora?. Soy un poco inexperto en esto. Cuando me salgo de los reports, Me pierdoooo!!.


Gracias a todos.

Julià T.
14-08-2003, 21:34:11
Para poder utilizar el siguiente código, es necesario que la impresora que estas utilizando, sea capaz de entender estas "funciones de control", si no es así podras ver que imprime la letra 'A'

BeginDoc
....
P.Canvas.Font.Name:='Control';
P.Canvas.TextOut(x,y,'A');
EndDoc;
end;


Nota, yo lo he utilizado directamente con el Rave, poniendo directamente un cuadro de texto con la fuente y el texto específicos.

REDCOM
15-08-2003, 18:43:38
Hola,

Creo que necesitas escribir directamente en la impresora, prueba con el siguiente código:

unit Escribe_directo;

interface

uses printers, WinProcs, WinTypes, SysUtils;

Procedure Prueba_impresora;

implementation

Type
Tpasa_datos = Record
nLong : Integer;
Datos : Array[0..255] of byte;
end;

Procedure Impresion_directa(s : String);
var
CadenaB : TPasa_datos;
Begin
CadenaB.nLong := Length(s);
StrPCopy(@CadenaB.Datos,s);
Escape(printer.handle, PASSTHROUGH,0,@CadenaB,nil);
End;



Procedure Prueba_impresora;
Begin
Printer.BeginDoc;
Impresion_directa(CHR(27)+'&l1O'+'Hello, World!'); // Aqui va el caracter de escape que abre el cajon
Printer.EndDoc;
End;


end.

Motoboy
18-08-2003, 18:57:16
Hola a todos,

En primer lugar quiero daros las gracias a todos por la ayuda que me estáis prestando.

Julià T.: Asignando la fuente control y enviándole una 'A' o 'B' se abre el cajón.

Lo que pasa, es que hay más funciones de la impresora que me gustaría utilizar, como por ejemplo: imprimir en negrita, rojo, etc.

Al final he probado a escribir directamente como dice REDCOM y también funciona.

Pero mi duda ahora es si utilizar el canvas o escribir directamente para escribir el texto, ya que no consigo de esta última manera, cambiar el tamaño de letra.


Una vez más,

GRACIAS A TODOS

Julià T.
19-08-2003, 00:32:40
Hola Motoboy:

Tal como indicas, la impresora deberia imprimir la fuente que tu elijas, ya sea negrita, +grande, ... según la fuente que pongas en el canvas.
Lo de imprimir en rojo, no sé que modelo usas, pero diria que tan sólo lo podras hacer si la impresora lo permite, ya sea por la tinta que tenga o con un papel especial.
Referente a las diversas opciones o "funciones" que permite la fuente control, deberias consultar el manual (que seguramente deberás bajar de internet).

Nota: la fuente de control es una fuente de la impresora (no de windows), por lo que si realizas algo para previsualizar con fuentes de impresora, windows no sabe como dibujarlo en pantalla.

Si quieres podrias probar con el TRichEdit que tiene un método que es print, que evitaria tener que ir posicionando cada línea y calculando su posición, admás de poder previsualizar como queda. Estoy casi seguro que con tu impresora debe funcionar correctamente, tan seguro que puedes hacer las pruebas de tamaño y color directamente con el worpad.

REDCOM
19-08-2003, 04:04:43
Hola,

Obviamente ya que tienes la posibilidad de enviar caracteres de
escape directamente a la impresora no debes tener ningun problema para imprimir lo que quieras con ella, la única dificultad es que se debe trabajar un poco más para lograrlo.

Para lograr expandr la fuente con la que se imprime el texto en la impresora, seguramente el manual informa de los caracteres de escape necesarios para ello, te sugiero que los consultes y si no lo consigues, dinos cual es el modelo y marca de impresora, tal vez tengamos algo que te ayude.

Hasta luego.

Motoboy
20-08-2003, 23:49:00
Una vez más muchísimas gracias por vuestra valiosa ayuda.

Voy hacer unas pruebas y ya os comentaré.


Gracias
---------

Motoboy
29-08-2003, 15:08:06
Hola a todos,

Comentaros que las pruebas han sido un éxito. Ya imprimo y el cajón se abre perfectamente.

Una vez más, daros las gracias por todo.