Ir para conteúdo
  • Cadastre-se

dev botao

Arquivo ACBr.h para Balança e Leitor de Códigos de Barras.


  • Este tópico foi criado há 4718 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Oi Wilson,

Acabo de atualizar o ACBr.h no SVN com as definições da balança. São as declarações iniciadas por "BAL_".

Não incluí o LCB porque está incompleto ainda, como em meu aplicativo eu uso LCB via teclado, acabei não terminando ele.

O jACBr está no mesmo pé, sem suporte ao BAL_ e ao LCB_, vou trabalhar nisso assim que houver necessidade.

Me dê mais detalhes de como vc está usando a DLL, será legal trocarmos essa experiência.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Olá Batiati!

Mais uma vez obrigado pela sua atenção. Conforme mencionei em post anterior, pretendo atualizar meu Aplicativo Comercial, desenvolvido em Access/VBA, de modo a atender a legislação do PAF-ECF; para tanto, pretendo utilizar a ACBr32.dll. No momento estou convertendo o ACBr.h nas declarações compatíveis com o VBA; terei imenso prazer em realimentá-lo com informações, na medida em que for desenvolvendo a atualização do meu A.C.

Com relação ao arquivo ACBr.h, fiz hoje a atualização do projeto ACBr via SVN, entretanto, a versão do ACBr.h ainda é a de 21/09/2010, ou seja, não contempla a Balança, conforme pode ser observado no arquivo com as declarações convertidas, em anexo

Sds.

Wilson

Declarações para ACBr32.txt

Link para o comentário
Compartilhar em outros sites

Mil desculpas, houve algum problema com minha senha do sourceforge (resetaram ela devido ao evento mundial do resete sua senha ... ahhh, e pra ajudar o email que eu tenho cadastro lá não está mais ativo ... ahhh2), por isso não consegui fazer o checkin e acabei não dando retorno aqui no fórum também.

Mas segue em anexo o ACBr.h atualizado.

Estou desenvolvendo o exemplo em VB, que será composto de um componente OCX e um exemplo. Acho que em Access o componente OCX pode ser interessante. Vou tentar postar alguma coisa funcionando o mais breve.

Abs,

ACBr_H.zip

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Olá Batiati, obrigado mais uma vez!

Apesar de conhecer muito pouco de Delphi resolvi verificar como foram implementadas as funções, propriedades e métodos da ACBr32.dll. Abri a versão atualizada do projeto, no Delphi 2010, porem surgiram algumas dúvidas:

1 - as Units ACBrCommonDll, ACBrECFDll, ACBrBALDll e ACBrLCBDll não foram carregadas automaticamente no projeto; é alguma opção de inicialização do Delphi?

2 - Ao compilar o projeto, com ou sem as Units carregadas, o arquivo gerado (ACBr32.DLL) foi bem maior do que o disponível no projeto ACBr; aproximadamente 2 MB contra os 900 KB do original.

Na conversão para VBA tenho usado o tipo Long para ecfHandle, PCHAR e bufferLen, conforme abaixo. Está correto?

[DllImport int ECF_GetUltimoErro(const ACBR_HANDLE ecfHandle, PCHAR buffer, const int bufferLen);

Public Declare Function GetUltimoErro Lib "ACBr32" (ByRef handle As Long, ByRef buffer As Long, ByVal bufferLen As Long) As Integer

Amanhã começarei a testar a DLL.

Sds.

Wilson

Link para o comentário
Compartilhar em outros sites

Oi Wilson,

Eu uso o projeto no Delphi 6, mas tem um projeto Lazarus também; Não posso te ajudar muito quanto a isso. Pascal eu até sei pro gasto, mas não sou familiarizado com a IDE do delphi, Só sei mesmo abrir o projeto e compilar :-)

Quanto às declarações:

DllImport int ECF_GetUltimoErro(const ACBR_HANDLE ecfHandle, PCHAR buffer, const int bufferLen);

Sempre que for "const" utilize ByVal no VB6, o resto é ByRef.

O tipo String no VB6 deve sempre ser ByVal, mesmo que não seja "const"

O tipo Integer é Long no VB6.

Ficaria assim:

Public Declare Function ECF_GetUltimoErro Lib "ACBr32" (ByVal ecfHandle As Long, ByVal buffer As String, ByVal bufferLen As Long) As Long

***

Mas tem um probleminha: A ACBr32.DLL é compilada em cdecl (tem um post sobre isso no arquivo do fórum). O VB6 só funciona com DLL stdcall ... pra resolver isso, o projeto em Delphi tem um DEFINE que compila num ou noutro modo. Portanto se você usar a mesma DLL do projeto C/C++, ACBr.NET ou jACBr, o VB6 vai reclamar. Utilize a versão em anexo aqui.

***

E vou te passar em anexo um pedaço do projeto em VB6 que estou fazendo; Vamos juntar o que temos que anda mais rápido.

Abra o projeto ACBr.vbg que contém o OCX e um Form de teste; Não está concluído ainda mas já tem o caminho iniciado.

Qualquer coisa, diga aí o que achou.

Abs,

ACBr_ActiveX.zip

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Olá Batiati!

Maravilha o exemplo postado, assim como as dicas. Era o que eu estava precisando para dar continuidade ao meu projeto.

Fiz um pequeno programa em Access/VBA 2007, cópia anexa, para ir me familiarizando com a DLL. Utilizei a versão que você recompilou para o padrão VB6. As declarações das funções que não constavam no exemplo eu converti para VB a partir do original em Delphi, portanto, não tenho certeza se estão totalmente corretas. Está tudo funcionando bem, só um pequeno bug que não consegui resolver: quando vou efetuar o pagamento, após a subtotalização, primeiro obtenho o SubTotal atraves da função ECF_GetSubTotal e depois chamo ECF_EfetuaPagamento. O SubTotal retornado está sendo, sempre, um valor inteiro, apesar do valor impresso no cupom estar correto. Por exemplo, no cupom SubTotal = 10,50 o retorno de ECF_GetSubTotal = 10,00. A função ECF_EfetuaPagamento imprime "Dinheiro 10,00" e ECF_FechaCupom imprime "Dinheiro 0,50" e "Soma 10,50". Estou utilizando o Emulador Bematech da impressora MP-2100 TH FI.

Abraços.

Wilson

Não estou conseguindo enviar o arquivo (TesteACBr32.rar - 48 KB) como anexo. Tentei criar um outro tópico para enviar o anexo porém sem sucesso.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Não estou conseguindo enviar o arquivo (TesteACBr32.rar - 48 KB) como anexo. Tentei criar um outro tópico para enviar o anexo porém sem sucesso.

Talvez seja algum problema com o RAR. Tente com o winzip.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Olá Elton e Batiati!

Com Zip tambem não deu certo.

O seguinte erro está ocorrendo: "Desculpe, o limite de quota de anexos foi alcançado."

Isto significa limite na quantidade de anexos ou no tamanho de anexos?

Sds.

Wilson

Link para o comentário
Compartilhar em outros sites

  • Consultores

Queira tentar novamente Wilson.

O André aumentou o tamanho limite dos anexos de ~ 50MB para ~100MB.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Oi Wilson,

Verifique a declaração da API e o tipo de dados utilizado como parâmetro, pois esses métodos que retornam Double e Date possuem um parâmetro byRef Double (64bits na maioria das linguagens, inclusive no VB6).

Fico aguardando seu código.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Link para o comentário
Compartilhar em outros sites

Olá Batiati!

O erro no retorno de ECF_GetSubTotal na realidade foi um erro meu, na função abaixo:

Public Function LeSubTotalCupom() As Long Double

On Error GoTo Erro

Dim varSubTotal As Double

resp = ECF_GetSubTotal(cHandle, varSubTotal)

Sair:

LeSubTotalCupom = varSubTotal

Exit Function

Erro:

resp = -1

Resume Sair

End Function

O exemplo que encaminhei em anexo, na mensagem anterior, agora está funcionando corretamente.

Abraços.

Wilson

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4718 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.