ACBr - xHarbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

ACBr - xHarbour

Mensagem por TerraSoftware »

Caros colegas, andei pesquisando um pouco sobre o projeto ACBr, achei bastante interessante, mas tive algumas duvidas. Me parece que o sub-projeto ACBrECF é direcionado para delphi, ou seja, ele é um componente que pode ser incluido em projetos desenvolvidos em delphi. Para quem usa outras linguagens, como nós, existe o sub-projeto ACBrMonitor que pode ser usado atraves de troca de informaçoes via arquivos TXT. Existe tambem o sub-projeto ACBrTEF, este, me parece, só em delphi.

Pergunto aos colegas: é realmente assim?? Não conseguimos usar os componentes do ACBrECF e do ACBrTEF em nossos programas desenvolvidos em xHarbour??
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
dopi
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 23 Out 2004 12:29
Localização: Tatuí - SP
Contato:

Mensagem por dopi »

Neste caso, é recomendado o ACBrMonitor com Sockets (muito rápido e pode ser remoto)... Veja esse post:
https://pctoledo.org/forum/viewtopic.php?t=6691
[]s Daniel

Conheça o projeto Automação Comercial Brasil
http://acbr.sourceforge.net/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: ACBr - xHarbour

Mensagem por rochinha »

Amiguinho,

Fiz um teste recente com ACBrECFDLL e obtive sucesso usando uma Bematech e o antigo emulador Bematech.

Não tive problemas para integra-lo.

Quanto ao monitor fiz funções em meu sistema para interagir com o mesmo e obtive muito sucesso.

Já comunicação direta, TelNet, etc, nunca testei.

Se o componente for liberado em formato .DLL ou .OCX acho que exista uma grande possibilidade de uso do mesmo no mundo Harbour.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: ACBr - xHarbour

Mensagem por TerraSoftware »

Caro colega rochinha.
Já utilizo o AcbrMonitor com comunicação TCP/IP, que, por sinal, funciona muito bem.
Acredito que via dll seria melhor ainda, o amigo tem algum exemplo de como utilizar a referida dll?

Outra coisa: sinceramente, as vezes (muitas vezes), penso em iniciar projetos novos em delphi, cara!! existe tanto componente ja pronto para delphi!! e no harbour é um tal de estica-e-puxa... de versao, de com X, de sem X, de lib gráfica, de rdd, de banco relacional, de .COM, de .ORG, de vai, de vem, de etc e tal. Cara! é dificil heim. Mas de qualquer forma a gente ainda continua na "peleja".

Obrigado.
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Re: ACBr - xHarbour

Mensagem por pauloa1 »

Concondo também, toda vez que surge uma mudança mais drástica, os usuários de delphi são os primeiros a ter os componentes, basta instalar o pacote e pronto , e Harbour...... sem falar de incompatibildades quando trocam de versão, uso WVW e agora não posso atualizar para a nova versão, porque da incompatibilidade. Assim fico com um pé atras sobre harbour.
Paulo
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: ACBr - xHarbour

Mensagem por sygecom »

Olá Paulo,
Sobre a incompatibilidade da GTWVW com as versões recente, isso não é problema do xharbour ou harbour, isso foi uma contribuição de terceiro que disponibilizou gratuitamente para quem quiser usar por conta e risco, agora como o xharbour e o harbour esta cada vez evoluindo e não podem parar no tempo por causa de contribuições de terceiros você tem que entrar em contato com quem fez essa contribuição e ver se a mesma vai acompanhar os projetos xharbour e harbour.
Agora se não queres mais esse tipo de preocupação, procure migrar para uma LIB visual que use por exemplo as API direto do windows, como Hwgui, Fivewin e etc...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: ACBr - xHarbour

Mensagem por rochinha »

Amiguinhos,

Desculpem a demora, ai esta o exemplo:

Esta foi a adapatação que fiz de um código Pascal para usar em xBase:

Código: Selecionar todos

/////////////////////////////////////////////////////////////////////////////
//
// 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
Caso possua uma Impressora real faça o teste e verifique qual porta COM esta instalada.

Fiz testes com uma Bematech real e com o Emulador DOS Bematech, funcionou legal.

O unico problema desta DLL é que ela possui os comandos básicos que estão exemplificados acima.

O link de download desta DLL ficará em http://www.5volution.com.br/downloads/f ... ecfdll.dll
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
anfm
Colaborador
Colaborador
Mensagens: 65
Registrado em: 01 Mar 2010 22:16
Localização: Tatuí-SP
Contato:

Re: ACBr - xHarbour

Mensagem por anfm »

Desculpe retomar um tópico antigo, mas gostaria de pedir a colaboração de vcs.

Eu comecei a desenvolver esta DLL, mas por falta de interesse(nunca recebi o retorno de alguém que tivesse testado) parei de desenvolver.

Caso alguém se disponha a testar e também a dar sugestões de como seriam os tipos de retorno da DLL posso continuar o desenvolvimento desta DLL e acrescentar todos os comandos do componente ACBrECF, deixando mais uma opção para quem não desejar usar o ACBrMonitor usar diretamente esta DLL.
André Ferreira de Moraes
Conheça o Projeto ACBr - Automaçao Comercial Brasil
http://acbr.sourceforge.net
--------------------------------------------------------------------------------------
Fórum Oficial do Projeto ACBr
http://www.djsystem.com.br/acbr/forum
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: ACBr - xHarbour

Mensagem por rochinha »

Amiguinho,

Talvez voce tenha encontrado não só aqui neste forum mas no outro forum que voce monitora que coloquei postagens referentes ao uso de sua .DLL e recentemente disponibilizei testes e material referente a ela.

Acho até que ela nem precise ser muito profunda, mas que possua alguns comandos a mais como geração de arquivos de memória e cupons não fiscais.

Se não me engano foi também de seu site que baixei algo relacionado a TEF, se não for esqueça.

Sinceramente cheguei a adaptar sua .DLL em um de meus PDVs mas só pude fazer testes com Bematech real.

No que puder ajudar estarei à disposição. Tenho uma Bematech Real a minha disposição.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: ACBr - xHarbour

Mensagem por TerraSoftware »

Caro colega, eu tambem tenho todo o interese, no que eu puder, estou a disposicao para ajudar. Aqui na empresa temos 2 daruma para teste (FS 345 e FS 600).
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar do usuário
anfm
Colaborador
Colaborador
Mensagens: 65
Registrado em: 01 Mar 2010 22:16
Localização: Tatuí-SP
Contato:

Re: ACBr - xHarbour

Mensagem por anfm »

Nova DLL disponível em http://acbr.svn.sourceforge.net/viewvc/ ... vision=793

A lista de comandos mapeados pode ser vista no link http://acbr.svn.sourceforge.net/viewvc/ ... vision=793
André Ferreira de Moraes
Conheça o Projeto ACBr - Automaçao Comercial Brasil
http://acbr.sourceforge.net
--------------------------------------------------------------------------------------
Fórum Oficial do Projeto ACBr
http://www.djsystem.com.br/acbr/forum
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Re: ACBr - xHarbour

Mensagem por MARINI »

Bom dia,
Estou tentando adaptar o exemplo do Rochinha acima para converter para Xailer,
pois o exemplo dele está para Fivewin e não estou conseguiu passar isto para apenas xHarbour:

DLL32 FUNCTION DefineModelo( cModeloStr AS STRING, cPorta AS STRING, nTimeout AS _INT ) AS BOOL PASCAL FROM "DefineModelo" LIB ACBrDLL

nHandle := LoadLibrary( ACBrDLL ) -> foi bem sucedido


DefineModelo( "Daruma", "COM1", 3 ) -> não consigo usar esta função mesmo declarando em REQUEST

Alguém sabe como fazer isto?
Editado pela última vez por MARINI em 12 Mar 2010 11:00, em um total de 1 vez.
Sds
Marini
Avatar do usuário
anfm
Colaborador
Colaborador
Mensagens: 65
Registrado em: 01 Mar 2010 22:16
Localização: Tatuí-SP
Contato:

Re: ACBr - xHarbour

Mensagem por anfm »

Neste link vc encontra a descrição de alguns comandos da DLL - http://www.forumweb.com.br/foruns/index ... 95-acbrdll

Por enquanto vc deve passar o nome da impressora como Daruma, com o D maiúsculo e o resto minúsculo. Depois irei ajustar para ajustar para aceitar com qualquer case.
André Ferreira de Moraes
Conheça o Projeto ACBr - Automaçao Comercial Brasil
http://acbr.sourceforge.net
--------------------------------------------------------------------------------------
Fórum Oficial do Projeto ACBr
http://www.djsystem.com.br/acbr/forum
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Re: ACBr - xHarbour

Mensagem por MARINI »

André:

nHandle := LoadLibrary( ACBrDLL ) -> foi bem sucedido
DllCall(nHandle,DC_CALL_STD,"DefineModelo","Daruma", "COM1" , 3 ) -> foi bem sucedido

Mas para pegar o retorno da data assim:

nData:=SPACE(16)
DllCall(nHandle,DC_CALL_STD,"DataHora",nData ) ->

nData retorna 3 caracteres estranhos.


Como faço para pegar um retorno?
Sds
Marini
Avatar do usuário
anfm
Colaborador
Colaborador
Mensagens: 65
Registrado em: 01 Mar 2010 22:16
Localização: Tatuí-SP
Contato:

Re: ACBr - xHarbour

Mensagem por anfm »

Os retornos estão sendo usados os tipos do delphi (TDateTime, Float, Integer, etc), provavelmente vou ter q mudar para retornar tudo como pchar.

Vou mudar os retornos e assim que tiver uma nova versão disponível, aviso aqui no fórum.
André Ferreira de Moraes
Conheça o Projeto ACBr - Automaçao Comercial Brasil
http://acbr.sourceforge.net
--------------------------------------------------------------------------------------
Fórum Oficial do Projeto ACBr
http://www.djsystem.com.br/acbr/forum
Responder