Página 1 de 3
ACBr - xHarbour
Enviado: 30 Nov 2007 16:00
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??
Enviado: 04 Dez 2007 22:47
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
Re: ACBr - xHarbour
Enviado: 30 Mar 2009 13:12
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.
Re: ACBr - xHarbour
Enviado: 30 Mar 2009 13:34
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.
Re: ACBr - xHarbour
Enviado: 07 Abr 2009 10:37
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
Re: ACBr - xHarbour
Enviado: 11 Abr 2009 15:02
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...
Re: ACBr - xHarbour
Enviado: 06 Mai 2009 17:24
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
Re: ACBr - xHarbour
Enviado: 09 Mar 2010 09:32
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.
Re: ACBr - xHarbour
Enviado: 09 Mar 2010 20:40
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.
Re: ACBr - xHarbour
Enviado: 10 Mar 2010 08:20
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).
Re: ACBr - xHarbour
Enviado: 10 Mar 2010 21:38
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
Re: ACBr - xHarbour
Enviado: 12 Mar 2010 10:38
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?
Re: ACBr - xHarbour
Enviado: 12 Mar 2010 10:45
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.
Re: ACBr - xHarbour
Enviado: 12 Mar 2010 11:15
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?
Re: ACBr - xHarbour
Enviado: 12 Mar 2010 11:27
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.