Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir usando OPOS (https://www.clubdelphi.com/foros/showthread.php?t=59523)

seoane 29-08-2008 22:08:24

Imprimir usando OPOS
 
¿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/t...=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).

Código Delphi [-]
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...iiitrm_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

Cita:

Empezado por Cañones (Mensaje 318494)
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 ...)


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

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