Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2018
freynoso freynoso is offline
Registrado
 
Registrado: Oct 2006
Posts: 5
Poder: 0
freynoso Va por buen camino
Red face Ejemplo en VB para convertir a Delphi

Hola a todos.

Tengo una situación un poco crítica. Puede alguno ayudarme a reescribir este procedimiento en Delphi?

Private Sub Command1_Click()
Dim sAux As String
Dim lAux As Long
Dim lreturn As Long

Const FLD_XNUMBER = 6

sAux = Chr$(&H4) & Chr$(&H2)
AddField sAux
sAux = Chr$(&H0) & Chr$(&H0)
AddField sAux
Call SendCommand
'Initialize string

sAux = Space(10)

'Debug to check answer
'no time out. just for debugging
lreturn = 1

lreturn = GetMessageField(sAux, lAux, FLD_XNUMBER)
DoEvents

MsgBox (sAux)

End Sub


Funciona perfectamente en VB. He hecho de todo pero en Delphi no me funciona.

Muy agradecido anticipadamente.

Saludos.

Fabio.
Responder Con Cita
  #2  
Antiguo 13-03-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.476
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por freynoso Ver Mensaje
He hecho de todo pero en Delphi no me funciona.
A ver qué has hecho en Delphi y por qué no funciona.

PS: Y no olvides poner las etiquetas para el código.

Responder Con Cita
  #3  
Antiguo 13-03-2018
freynoso freynoso is offline
Registrado
 
Registrado: Oct 2006
Posts: 5
Poder: 0
freynoso Va por buen camino
Antes de seguir, agradezco mucho de antemano la ayuda que me puedan brindar.

Esto es lo que he hecho, probado, cambiado, intentado...

La idea es que al utilizar una librería dll poder conectarme a una impresora fiscal para obtener configuración (para uso de seguridad de la aplicación) y en lo adelante poder generar documentos de venta, no venta, etc. Lo comentado es lo que he ido omitiendo.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var OpenSerialPort: function(wCommNumber : Word; dwBaudRate : LongWord) : LongWord; stdCall;
    AddMessageField:function(szField : AnsiString; dwFieldLength : LongWord) : LongWord; stdCall;
    GetMessageField: function(szField: AnsiString; dwFieldLength : LongWord; lAnsweredField: Long) : LongWord; stdCall;
    SendSerialMessage : function: LongWord; stdCall;
    PurgeMessage:function: LongWord; stdCall;
    CloseSerialPort : function: LongWord; stdCall;
    Lib: THandle;
    r : LongWord;
    szField : AnsiString;
    sAux : AnsiString;
    lAux : LongWord;
begin
  Lib := LoadLibrary('EpsonFiscalProtocol.dll');
  @OpenSerialPort := GetProcAddress(Lib, 'OpenSerialPort');
  if Assigned(@OpenSerialPort) then
  begin
    r := OpenSerialPort(3, 9600);
    try
    if r <> 0 then
      ShowMessage('Error al abrir el puerto 3')
    else
    begin
      @AddMessageField := GetProcAddress(Lib, 'AddMessageField');
      @SendSerialMessage := GetProcAddress(Lib, 'SendSerialMessage');
      @GetMessageField := GetProcAddress(Lib, 'GetMessageField');
      if Assigned(@AddMessageField) then
      begin
        //SetLength(szField, 4);

        szField := Concat('$04', '$02');//StrToInt(Format('%s', ['0x04']));
//        szField[1] := Chr(2);//StrToInt(Format('%s', ['0x02']));
        AddMessageField(PAnsiChar(szField), 2);

        szField := Concat('$00', '$00');//StrToInt(Format('%s', ['0x00']));
//        szField[1] := Chr(0);//StrToInt(Format('%s', ['0x00']));
        AddMessageField(PAnsiChar(szField), 2);

        r := SendSerialMessage;

//        Sleep(500);

        r := GetMessageField(sAux, lAux, 6);

        ShowMessage(sAux + IntToStr(lAux));

      end;
    end;
    finally
      @CloseSerialPort := GetProcAddress(Lib, 'CloseSerialPort');
      if Assigned(@CloseSerialPort) then
        r := CloseSerialPort;
      FreeLibrary(Lib);
    end;
  end;

end;
Responder Con Cita
  #4  
Antiguo 13-03-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.476
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ummm... pero para usar una impresora epson no necesitas convertir de VB.
Haz una búsqueda por los foros, es un tema que se ha tratado varias veces.
Responder Con Cita
  #5  
Antiguo 13-03-2018
freynoso freynoso is offline
Registrado
 
Registrado: Oct 2006
Posts: 5
Poder: 0
freynoso Va por buen camino
He buscado en el forum, sin embargo no he encontrado ningún ejemplo con el formato correcto para enviarle los comandos a la impresora fiscal. El ejemplo que colgué al principio viene con la documentación de la impresora y he intentado varias formas de enviarle los comandos en delphi, pero nada aún. El ejemplo en VB funciona, por eso he querido ver si se puede convertir o transcribir.

Por cierto, disculpa que no he dado muchos detalles. Es para trabajar con impresoras fiscales en República Dominicana.
Responder Con Cita
  #6  
Antiguo 14-03-2018
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Bogotá, Colombia
Posts: 748
Poder: 16
gatosoft Va camino a la fama
La función GetProcAddress devuelve un método, así que bastaría con:

Código Delphi [-]
OpenSerialPort := GetProcAddress(Lib, 'OpenSerialPort');
if Assigned(OpenSerialPort) then
(sin la arroba)
__________________
gatosoft [M.40.co]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejemplo sencillo para ejecutar Hilos en delphi n03l Varios 4 23-08-2012 15:23:27
Un ejemplo para hacer un Telnet Rafael Reina Internet 1 17-07-2006 13:17:14
Ejemplo para un viejo clippero lbidi Varios 1 18-01-2006 15:39:04
AnyNET-Delphi Beta2: Una herramienta para convertir de .NET a Delphi.NET mamcx Noticias 3 01-10-2005 01:27:09
Principiante PHP Requiere ejemplo para dummy ASAPLTDA PHP 1 12-09-2005 16:58:14


La franja horaria es GMT +2. Ahora son las 14:42:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi