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
public
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);
OPOSPrinter.Open(txtPrinter.Text,nRC);
txtLog.Lines.Add(' Open: RC = ' + IntToStr(nRC));
if nRC = OPOS_SUCCESS then
begin
OPOSPrinter.ClaimDevice(1000,nRC);
txtLog.Lines.Add(' Claim: RC = ' + IntToStr(nRC));
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.