PDA

Ver la Versión Completa : Como abrir una caja registradora desde delphi 2007


ingabraham
03-01-2013, 17:41:18
Como abrir una caja registradora desde delphi 2007.


la caja registradora tiene un cable como el del telefono, donde va conectada, al pc o a una impresora de colillitas como la de los almacenes??:confused:

es una caja registradora de punto de venta, con un cajon portamonedas.

Casimiro Notevi
03-01-2013, 18:41:14
Mira los enlaces de abajo de esta página, lo mismo te pueden servir.

newtron
04-01-2013, 12:33:47
Si está conectada a una impresora de tickets la tienes que abrir enviandole una secuencia de escape a esa impresora. Esa secuencia de escape depende de cada impresora pero suele funcionar este:

27 112 0 20 100

Saludos

ingabraham
04-01-2013, 16:30:40
Si está conectada a una impresora de tickets la tienes que abrir enviandole una secuencia de escape a esa impresora. Esa secuencia de escape depende de cada impresora pero suele funcionar este:

27 112 0 20 100

Saludos

como los envio desde delphi? yo mando a imprimir los tickets desde mi programa.

Casimiro Notevi
04-01-2013, 16:37:26
como los envio desde delphi? yo mando a imprimir los tickets desde mi programa.
En uno de los enlaces que te he indicado lo explica.

nlsgarcia
04-01-2013, 18:44:28
ingabraham,


La caja registradora tiene un cable como el del telefono, donde va conectada, al pc o a una impresora de colillitas.



Esa secuencia de escape depende de cada impresora pero suele funcionar este: 27 112 0 20 100



¿Como los envio desde delphi?

Voy a asumir varias premisas:

1- Impresora de Colillitas = Impresora Fiscal
2- La Impresora Fiscal se conecta al PC vía Puerto Serial 1.
3- La Impresora funciona a 11500 Bps.
4- No Existe un Comando Específico de la Impresora Fiscal para la Apertura de la Caja Registradora, por tanto se requiere una Secuencia X.
5- La Interfaz de Conexión de la Caja Registradora con el PC es Serial.

En base a las premisas anteriores revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function OpenBox(COMSerial : Byte) : Boolean;
var
HCom : THandle;
Buffer : Array[0..4] of Byte;
CommDCB : Array[0..255] of char;
ComPort : String;
BytesWrites : LongWord;
PDCB : _DCB;

begin

COMPort := '\\.\COM' + IntToStr(COMSerial);

HCom := CreateFile(PChar(COMPort), GENERIC_READ OR GENERIC_WRITE, 0, Nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

if HCom <> INVALID_HANDLE_VALUE then
begin

Buffer[0] := 27;
Buffer[1] := 112;
Buffer[2] := 0;
Buffer[3] := 20;
Buffer[4] := 100;

CommDCB := 'baud=115200 parity=n data=8 stop=1 xon=off odsr=off octs=off dtr=off rts=off idsr=off';
BuildCommDCB(@CommDCB,PDCB);
SetCommState(hCom,PDCB);

if not WriteFile(HCom, Buffer, 5, BytesWrites, nil) then
begin
ShowMessage(SysErrorMessage(GetLastError));
Result := False;
Exit;
end;

If BytesWrites <> 5 then
begin
MessageDlg('Error en Transmision Serial', mtInformation, [mbOK], 0);
Result := False;
Exit;
end;

end
else
begin
MessageDlg('El Puerto de Comunicacion Serial No Esta Habilitado en Windows', mtInformation, [mbOK], 0);
Result := False;
Exit;
end;

Result := True;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenBox(1) then
// Código 1
else
// Código 2
end;

end.

El código anterior envía la Secuencia de Apertura sugerida por newtron vía Puerto Serial 1. Haz la prueba en los siguientes casos:

1- Caja Registradora conectada directamente al PC.
2- Caja Registradora conectada al PC por medio de la Impresora Fiscal.

Te sugiero colocar las especificaciones de la Impresora Fiscal : Marca, Modelo, Interfaz de Comunicación, Tasa de Transferencia, Comandos de Comunicación Asociados a la Caja Registradora, Cualquier otro dato de interés para la solución del problema.


Yo mando a imprimir los tickets desde mi programa.

Probablemente de forma análoga al envío de comandos de impresión de Tickets a la Impresora Fiscal, sea la forma para enviar un Comando o Secuencia de Apertura a la Caja Registradora, te sugiero verificarlo.

Espero sea útil :)

Nelson.