PDA

Ver la Versión Completa : Problema Epsoninterface.dll


maxpayne198304
10-03-2020, 18:51:19
Buenas estoy teniendo muchisimos dramas para hacer funcionar EpsonFiscalInterface.dll, paso a comentar tengo el simulador instalado y andando, tengo todos y cada uno de los ejemplos que me pasaron en lazarus (yo uso delphi xe7) la cosa es asi puedo conectar el fiscal sin problemas pude instanciar la dll sin problemas, pero a la hora de enviar comandos se empieza a complicar.


procedure TForm3.Button1Click(Sender: TObject);
var
dll : THandle;
numero_int: integer;
prueba: STRING;
mayor : LongInt;
menor : LongInt;
str : Array[0..200] of AnsiChar;
error : LongInt;
ConsultarVersionDll: TConsultarVersionDll;
EstablecerEncabezado: TEstablecerEncabezado;
begin

dll := 0;

// instanciar dll - recordar que se require "uses Windows"
// for production -- dll := LoadLibrary('EpsonFiscalInterface.dll');
dll := LoadLibrary('EpsonFiscalInterface.dll');
numero_int := 1;
ConfigurarPuerto(Pchar(IntToStr(3)));
ConfigurarVelocidad(StrToint('9600'));
retorno := Conectar();
@ConsultarVersionDll := GetProcAddress(dll, 'ConsultarVersionDll');
if not Assigned(ConsultarVersionDll) then
begin
ShowMessage('Error al asignar funcion: ConsultarVersionDll');
Exit;
end;

error := ConsultarVersionDll(@str[0], 200, mayor, menor );

ShowMessage( str );

@EstablecerEncabezado := GetProcAddress(dll, 'EstablecerEncabezado');
if not Assigned(EstablecerEncabezado) then
begin
ShowMessage('Error al asignar funcion: ConsultarVersionDll');
Exit;
end;
prueba:='EPSON mala onda';
error := EstablecerEncabezado(numero_int, PANSICHAR(prueba) );
memo1.Lines.Add(inttostr(ERROR)+ 'Encabezado numero ' + IntTostr(numero_int) + ' establecido ');



end;


end.


Esto es una porcion de codigo que hice de prueba ya probe de todo pero cuando por ejemplo quiero cambiar el encabezado solo me toma el primer caracter, probe de todo desde mandar strings, pchar, ansichar solo me toma la letra "E" de la cadena entera el simulador lo muestra asi. Ahora cuando corro alguno de los softs de prueba que te dan con la dll hace todo sin problemas. Es la primera vez q me pasa, mas con algo simple como cambiar el encabezado.
Desde ya agradezco las respuestas o si a alguien ya le paso similar.

omarperez.qui
15-03-2020, 18:42:27
Hola Maxpayne, prueba de definir la variable "prueba" como Ansichar, el resto estaría bien.

Te comento que cuando me tope con el emulador, no se si sera el mismo (impresoras-fiscales.com), me encontré con el mismo problema. Con el emulador anda bien y cuando conectas la dll de epson y la impresora nada funciona.
Si es el mismo emulador mira la nota aclaratoria en su sitio que dice que emula el protocolo viejo.
Yo pude hacerla andar con la dll de Epson y la impresora conectada en modo "Fiscal". En modo "prueba" tampoco funcionan la mayoría de los comandos que tienen que ver con las facturas.

Espero te sirva, saludos.

softarg
23-07-2020, 16:15:19
Buenas estoy teniendo muchisimos dramas para hacer funcionar EpsonFiscalInterface.dll, paso a comentar tengo el simulador instalado y andando, tengo todos y cada uno de los ejemplos que me pasaron en lazarus (yo uso delphi xe7) la cosa es asi puedo conectar el fiscal sin problemas pude instanciar la dll sin problemas, pero a la hora de enviar comandos se empieza a complicar.


procedure TForm3.Button1Click(Sender: TObject);
var
dll : THandle;
numero_int: integer;
prueba: STRING;
mayor : LongInt;
menor : LongInt;
str : Array[0..200] of AnsiChar;
error : LongInt;
ConsultarVersionDll: TConsultarVersionDll;
EstablecerEncabezado: TEstablecerEncabezado;
begin

dll := 0;

// instanciar dll - recordar que se require "uses Windows"
// for production -- dll := LoadLibrary('EpsonFiscalInterface.dll');
dll := LoadLibrary('EpsonFiscalInterface.dll');
numero_int := 1;
ConfigurarPuerto(Pchar(IntToStr(3)));
ConfigurarVelocidad(StrToint('9600'));
retorno := Conectar();
@ConsultarVersionDll := GetProcAddress(dll, 'ConsultarVersionDll');
if not Assigned(ConsultarVersionDll) then
begin
ShowMessage('Error al asignar funcion: ConsultarVersionDll');
Exit;
end;

error := ConsultarVersionDll(@str[0], 200, mayor, menor );

ShowMessage( str );

@EstablecerEncabezado := GetProcAddress(dll, 'EstablecerEncabezado');
if not Assigned(EstablecerEncabezado) then
begin
ShowMessage('Error al asignar funcion: ConsultarVersionDll');
Exit;
end;
prueba:='EPSON mala onda';
error := EstablecerEncabezado(numero_int, PANSICHAR(prueba) );
memo1.Lines.Add(inttostr(ERROR)+ 'Encabezado numero ' + IntTostr(numero_int) + ' establecido ');



end;


end.


Esto es una porcion de codigo que hice de prueba ya probe de todo pero cuando por ejemplo quiero cambiar el encabezado solo me toma el primer caracter, probe de todo desde mandar strings, pchar, ansichar solo me toma la letra "E" de la cadena entera el simulador lo muestra asi. Ahora cuando corro alguno de los softs de prueba que te dan con la dll hace todo sin problemas. Es la primera vez q me pasa, mas con algo simple como cambiar el encabezado.
Desde ya agradezco las respuestas o si a alguien ya le paso similar.


Hola veo que hace tiempo de esto, quería saber como obtener la lista de funciones de la DLL y como hacer la declaración en el modulo del proyecto. Vi ejemplos en visual basic pero ni idea como pasarlo a pascal. cualquier ayuda te agradecería.
Saludos

omarperez.qui
23-07-2020, 18:48:41
Hola veo que hace tiempo de esto, quería saber como obtener la lista de funciones de la DLL y como hacer la declaración en el modulo del proyecto. Vi ejemplos en visual basic pero ni idea como pasarlo a pascal. cualquier ayuda te agradecería.
Saludos


Hola SoftArg. En el sitio de Epson donde conseguiste el paquete de la dll de tu impresora tienes un pdf con la documentacion, funciones, parametros y tipos de datos. Empieza por leer el documento.

Saludos