PDA

Ver la Versión Completa : Imprimir usando OPOS


seoane
29-08-2008, 22:08:24
¿Alguien ha utilizado los driver OPOS para imprimir desde un TPV (Terminal de Punto de Venta)? Me gustaría saber como funciona, o por lo menos por donde empezar.

egostar
29-08-2008, 22:17:40
Hola amigo seoane, la verdad es que quisiera ayudarte, pero no los conozco, tal vez esto te sirva.

http://www.delphipages.com/threads/thread.cfm?ID=93105&G=93066
http://monroecs.com/oposccos.htm

Salud OS

seoane
30-08-2008, 00:28:17
Voy haciendo progresos, he descargado un ActiveX de aquí (http://monroecs.com/oposccos_current.htm) y he importado el componente TOPOSPOSPrinter (y no es fácil hacer esto último el Turbo delphi explorer ;) ). Luego implemente en Delphi el ejemplo que se puede descargar de la misma pagina que el ActiveX.

Y ahí me quede, porque, aunque parece que no explota al ejecutarse :p , tampoco puedo saber si funciona ya que no estoy en el trabajo y no tengo a mano una impresora de tickets.

El lunes probare, mientras tanto si alguien quiere poner algún otro ejemplo ...

egostar
30-08-2008, 00:33:39
Ah que bien, que bueno que te haya servido. :)

Salud OS

PD: Vaya contigo, que bien eso del explorer :D

seoane
01-09-2008, 10:54:27
Pues ya es lunes, y he probado el código con una impresora de tickets (Toshiba A10) y va de maravilla. Solo me falta saber como puedo hacer para imprimir el logo, o por lo menos saber como mandar las secuencias de escape para imprimirlo yo mismo.

El código es el siguiente (el formulario son un edit, tres botones, un memo y un componente TOPOSPOSPRinter).


unit ufrmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, OposPOSPrinter_CCO_TLB, StdCtrls;
type
TfrmMain = class(TForm)
OPOSPrinter: TOPOSPOSPrinter;
btnOpen: TButton;
txtLog: TMemo;
btnClose: TButton;
btnPrint: TButton;
txtPrinter: TEdit;
procedure FormCreate(Sender: TObject);
procedure OPOSPrinterStatusUpdateEvent(ASender: TObject; Data: Integer);
procedure btnOpenClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure OPOSPrinterOutputCompleteEvent(ASender: TObject;
OutputID: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
uses OPOSConst;
procedure TfrmMain.btnCloseClick(Sender: TObject);
var
nRC: Integer;
begin
txtLog.Lines.Add('+Close');
OPOSPrinter.Close(nRC);
txtLog.Lines.Add(' Close: RC = ' + IntToStr(nRC));
if nRC = OPOS_SUCCESS then
txtLog.Lines.Add('-Close: Succeeded')
else
txtLog.Lines.Add('-Close: Failed');
end;

procedure TfrmMain.btnOpenClick(Sender: TObject);
var
nRC: Integer;
begin
if txtPrinter.Text <> EmptyStr then
begin
txtLog.Lines.Add('+Open: DeviceName = ' + txtPrinter.Text);
// Open the printer
OPOSPrinter.Open(txtPrinter.Text,nRC);
txtLog.Lines.Add(' Open: RC = ' + IntToStr(nRC));
// If succeeded, then claim.
if nRC = OPOS_SUCCESS then
begin
OPOSPrinter.ClaimDevice(1000,nRC);
txtLog.Lines.Add(' Claim: RC = ' + IntToStr(nRC));
// If succeeded, then enable.
if nRC = OPOS_SUCCESS then
begin
nrc:= OPOSPRinter.DefaultInterface.Set_DeviceEnabled(TRUE);
txtLog.Lines.Add(' Enable: RC = ' + IntToStr(nRC));
end;
txtLog.Lines.Add('-Open: Succeeded');
end else
txtLog.Lines.Add('-Open: Failed');
end;
end;
procedure TfrmMain.btnPrintClick(Sender: TObject);
var
nRC: Integer;
begin
txtLog.Lines.Add('+Print');
OPOSPrinter.PrintNormal(PTR_S_RECEIPT, WideString('Hola mundo')+#0013#0010,nRC);
txtLog.Lines.Add(' Print: RC = ' + IntToStr(nRC));
if nRC = OPOS_SUCCESS then
txtLog.Lines.Add('-Print: Succeeded')
else
txtLog.Lines.Add('-Print: Failed');
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
//
end;
procedure TfrmMain.OPOSPrinterOutputCompleteEvent(ASender: TObject;
OutputID: Integer);
begin
txtLog.Lines.Add(' OutputComplete: ' + IntToStr(OutputID));
end;
procedure TfrmMain.OPOSPrinterStatusUpdateEvent(ASender: TObject;
Data: Integer);
begin
txtLog.Lines.Add(' StatusUpdate: ' + IntToStr(Data));
end;
end.

egostar
01-09-2008, 16:45:57
Hola amigo

Me encontré este documento, a ver si te es de utilidad

http://www.thebarcodewarehouse.co.uk/Assets/Literature/20070115_164447_h6000iiitrm_e_1.pdf

De hecho me imagino que puedes usar la función relativa a OpenDrawer

Salud OS

Cañones
06-10-2008, 20:51:15
Hola.

Yo estoy probando de imprimir con una impresora Epson con el ocx Opos.
Ya lo tengo instalado en mi delphi.
Me podes decir que tengo que haer ahora, donde va el componente, es raro porque la unica propiedad que puedo cambiar es el Name y el resto de las propiedades no se entiende que son y muchas tienen el mismo numero Ej: MapMode 83425452, outputId 83425452.

Gracias y saludos.

seoane
06-10-2008, 23:05:55
Yo estoy probando de imprimir con una impresora Epson con el ocx Opos.
Ya lo tengo instalado en mi delphi.
Me podes decir que tengo que haer ahora, donde va el componente, es raro porque la unica propiedad que puedo cambiar es el Name y el resto de las propiedades no se entiende que son y muchas tienen el mismo numero Ej: MapMode 83425452, outputId 83425452.

No te puedo ayudar mucho, ya que yo he usado el Activex que menciono arriba (http://monroecs.com/oposccos_current.htm) que, en principio, puede trabajar con cualquier impresora que tenga driver OPOS, es decir, tu instalas el driver OPOS de tu impresora y luego instalas este ActiveX.

El componente que importas desde este ActiveX apenas tiene propiedades, prácticamente son todo funciones, y ninguna es extraña (Name, Height, Left, etc ...)