ingabraham,
Cita:
Empezado por ingabraham
La caja registradora tiene un cable como el del telefono, donde va conectada, al pc o a una impresora de colillitas.
|
Cita:
Empezado por newtron
Esa secuencia de escape depende de cada impresora pero suele funcionar este: 27 112 0 20 100
|
Cita:
Empezado por ingabraham
¿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:
Código Delphi
[-]
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
public
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
else
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.
Cita:
Empezado por newtron
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.