none
ACBrECFDll - Dll Usando O Componente Acbrecf, Testar em outras linguagens RRS feed

  • Pergunta

  •  

    Comecei a criar uma DLL usando o componente ACBrECF. Por enquanto, implementei apenas os comandos básicos, e testei usando o Delphi. Gostaria que alguém testasse usando outras linguagens (VB, Java, xHarbour, etc) e me passasse os resultados, pois dae posso terminar a DLL tendo a certeza que irá funcionar em diversas Linguagens.

    Abaixo segue a lista das funções que já estão na DLL:

     

    Code Block

    function DefineModelo(ModeloStr, Porta : String; Timeout : Integer ): Boolean; stdcall; External 'ACBrECFDLL.DLL';
    function IdentificaConsumidor( CPF_CNPJ : String; Nome : String = ''; Endereco : String = '') : Integer; stdcall;  External 'ACBrECFDLL.DLL';
    Function AbreCupom( CPF_CNPJ : String = ''; Nome : String = '';
                        Endereco : String = '') : Integer; stdcall; External 'ACBrECFDLL.DLL';
    Function VendeItem( Codigo, Descricao : String; AliquotaICMS : String;
                        Qtd : Double; ValorUnitario : Double; DescontoPorc : Double = 0;
                        Unidade : String = ''; TipoDescontoAcrescimo : String = '%') : Integer; stdcall; External 'ACBrECFDLL.DLL';
    Function SubtotalizaCupom( DescontoAcrescimo : Double = 0;
                                 MensagemRodape : String = '') : Integer; stdcall; External 'ACBrECFDLL.DLL';
    Function EfetuaPagamento( CodFormaPagto : String; Valor : Double;
                               Observacao : String = ''; ImprimeVinculado : Boolean = false) : Integer; stdcall; External 'ACBrECFDLL.DLL';
    Function FechaCupom( Observacao : String = '') : Integer; stdcall; External 'ACBrECFDLL.DLL';
    Function LeituraX : Integer; stdcall;  External 'ACBrECFDLL.DLL';
    Function ReducaoZ( DataHora : TDateTime = 0 ) : Integer; stdcall; External 'ACBrECFDLL.DLL';
    Function CancelaCupom  : Integer; stdcall;  External 'ACBrECFDLL.DLL';
    Function CancelaItemVendido( NumItem : Integer ) : Integer; stdcall;  External 'ACBrECFDLL.DLL';

     

     

    Para baixar a DLL clique aqui e para baixar o exemplo em Delphi clique aqui.
    sexta-feira, 23 de novembro de 2007 17:18

Todas as Respostas

  • Amiguinho,

    Este código faz uso de sua .DLL e utiliza como plataforma o Harbour e interface com a biblioteca Fivewin:

    Traduzi as chamadas das funções Pascal e embuti o carregamento da .DLL via LoadLibrary:

    Caso tenha acrescido mais algumas funções ou melhorias, disponibilize-as para que possamos aprimorá-la.

    /////////////////////////////////////////////////////////////////////////////
    //
    // ACBR - Funcoes Compativeis com ACBrECFDLL.DLL
    //
    //         Autor: Jose Carlos da Rocha
    //          Data: 24/03/2009
    //         Email: irochinha@itelefonica.com.br
    //           MSN: fivolution@hotmail.com
    //     Linguagem: xBase / Fivewin
    //   Plataformas: DOS, Windows
    // Requerimentos: Harbour/xHarbour
    //
    /////////////////////////////////////////////////////////////////////////////
    #include "fivewin.ch"
    #include "dll.ch"

    #define ACBrDLL "ACBrECFDLL.dll"

    function main()

       public hDLL := LoadLibrary( ACBrDLL )

       if hDLL > 0

          if DefineModelo( "Bematech", "COM6", 3 )

             nRetorno := AbreCupom()
             if nRetorno > 0
                ? "Cupom nao pode ser aberto."
             endif

             cTipoQtde      := "I"
             nCasasDecimais := "2"
             cCodigo        := "123456"
             cDescricao     := "PRODUTO TESTE"
             cAliquotaICMS  := "II"
             nQtdes         := 1
             nValorUnitario := 2.50
             nValorDesconto := 0
             cUnidade       := "UN"
             cTipoDesconto  := "%"

             nRetorno := VendeItem( cCodigo, cDescricao, cAliquotaICMS, nQtdes, nValorUnitario ) //, nValorDesconto, cUnidade, cTipoDesconto )
             if nRetorno > 0
                MsgRun( "Cancelando cupom. Erro ("+str(nRetorno)+")" )
                CancelaCupom()
             endif 
             nRetorno := VendeItem( cCodigo, cDescricao, cAliquotaICMS, nQtdes, nValorUnitario*2 ) //, nValorDesconto, cUnidade, cTipoDesconto )
             if nRetorno > 0
                MsgRun( "Cancelando cupom. Erro ("+str(nRetorno)+")" )
                CancelaCupom()
             endif 
             nRetorno := VendeItem( cCodigo, cDescricao, cAliquotaICMS, nQtdes*3, nValorUnitario, 10, "LT", "%" )
             if nRetorno > 0
                MsgRun( "Cancelando cupom. Erro ("+str(nRetorno)+")" )
                CancelaCupom()
             endif 

             *  Desconto := StrToFloatDef(InputBox('SubTotal','Digite o Desconto/Acréscimo:', '' ),0);
             *  Obs      := InputBox('SubTotal','Digite a Observação:', '' );
             *  Retorno := SubtotalizaCupom( Desconto, Obs ) ;
             nRetorno := SubTotalizaCupom( 0, "" )
             if nRetorno > 0
                MsgRun( "SubTotalizaCupom. Erro ("+str(nRetorno)+")" )
             endif

             *  CodForma := InputBox('Pagamento','Digite o código da forma:', '' );
             *  Valor    := StrToFloatDef(InputBox('Pagamento','Digite o Valor:', '' ),0);
             *  Obs      := InputBox('Pagamento','Digite a Observação:', '' );
             *  Retorno := EfetuaPagamento( CodForma, Valor, Obs ) ;
             nRetorno := EfetuaPagamento( "01", 100, "DEVE VOLTAR TROCO DE 1,25" )
             if nRetorno > 0
                MsgRun( "EfetuaPagamento. Erro ("+str(nRetorno)+")" )
             endif

             *  Obs := InputBox('Fechamento','Digite a Observação Final:', '' );
             *  Retorno := FechaCupom( Obs ) ;
             nRetorno := FechaCupom( "5Volution Fenix|http://www.5volution.com" )
             if nRetorno > 0
                MsgRun( "FechaCupom. Erro ("+str(nRetorno)+")" )
             endif

             if MsgYesNo( "Deseja cancelar este cupom?" )
                nRetorno := CancelaCupom()
             endif

             * nRetorno := ReducaoZ( date() )

             if MsgYesNo( "Deseja imprimir Leitura X?" )
                nRetorno := LeituraX()
             endif

             if MsgYesNo( "Deseja visualizar log?" )
                WinExec( "NOTEPAD LOG.TXT" )
             endif

             *  Item := StrToInt(InputBox('Cancela Item','Digite a Número do Item:', '' ));
             *  nRetorno := CancelaItemVendido( Item )

          else
             MsgStop('Não foi possível ativar o ECF')
          endif

          FreeLibrary( hDLL )
       else
          MsgInfo( "ACBrECFDLL.dll nao foi carregada." )
       endif

    return nil
                                                                                                               
    DLL32 FUNCTION DefineModelo( cModeloStr AS STRING, cPorta AS STRING, nTimeout AS _INT ) AS BOOL PASCAL FROM "DefineModelo" LIB ACBrDLL
    DLL32 FUNCTION IdentificaConsumidor( cCPF_CNPJ AS STRING, cNome AS STRING, cEndereco AS STRING ) AS _INT PASCAL FROM "IdentificaConsumidor" LIB ACBrDLL
    DLL32 FUNCTION AbreCupom( cCPF_CNPJ AS STRING, cNome AS STRING, cEndereco AS STRING ) AS _INT PASCAL FROM "AbreCupom" LIB ACBrDLL
    DLL32 FUNCTION VendeItem( cCodigo AS STRING, ;
                              cDescricao AS STRING, ;
                              cAliquotaICMS AS STRING, ;
                              nQtd AS _DOUBLE, ;
                              nValorUnitario AS _DOUBLE, ;
                              nDescontoPorc AS _DOUBLE, ;
                              cUnidade AS STRING, ;
                              cTipoDescontoAcrescimo AS STRING ) AS _INT PASCAL FROM "VendeItem" LIB ACBrDLL
    DLL32 FUNCTION FechaCupom( cObservacao AS STRING ) AS _INT PASCAL FROM "FechaCupom" LIB ACBrDLL
    DLL32 FUNCTION SubtotalizaCupom( DescontoAcrescimo AS _DOUBLE, MensagemRodape AS STRING ) AS _INT PASCAL FROM "SubtotalizaCupom" LIB ACBrDLL
    DLL32 FUNCTION EfetuaPagamento( cCodFormaPagto AS STRING, ;
                                    nValor AS _DOUBLE, ;
                                    cObservacao AS STRING, ;
                                    lImprimeVinculado AS BOOL ) AS _INT PASCAL FROM "EfetuaPagamento" LIB ACBrDLL
    DLL32 FUNCTION LeituraX() AS _INT PASCAL FROM "LeituraX" LIB ACBrDLL
    DLL32 FUNCTION ReducaoZ( DataHora AS DATE ) AS _INT PASCAL FROM "ReducaoZ" LIB ACBrDLL
    DLL32 FUNCTION CancelaCupom() AS _INT PASCAL FROM "CancelaCupom" LIB ACBrDLL
    DLL32 FUNCTION CancelaItemVendido( NumItem AS _INT ) AS _INT PASCAL FROM "CancelaItemVendido" LIB ACBrDLL

    Obrigado.
    terça-feira, 15 de dezembro de 2009 07:58