BemaFI32.DLL x Harbour 2.1

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

Moderador: Moderadores

clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

BemaFI32.DLL x Harbour 2.1

Mensagem por clipsis »

Olá, boa noite a todos!!

Desculpem ressuscitar o tópico.

Estou necessitando acessar as funções da BemaFI32.DLL. Pesquisei no forum e encontrei referências a respeito de um arquivo chamado DLLBEMAC.c.
Porém não tenho a menor idéia de como usá-lo.

Alguém, por favor, poderia me dar um exemplo de como utilizá-lo ?

Tenho o Harbour 2.1 com MinGW.

Hoje utilizo um arquivo HBP para gerar o executável.

Código: Selecionar todos

-gtwin
-lhbct
-inc

-oPrograma.exe

principal.prg
funcoes.prg
cupom.prg
Onde colocaria esse arquivo DLLBEMAC.c, quais lib preciso adicionar e como seria a chamada dessas funções para emitir um cupom fiscal.

Abraços
Clipper 5.2/Blinker
Harbour 3.0/Mingw
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

BemaFI32.DLL x Harbour 2.1

Mensagem por marcos.gurupi »

Nao seria melhor vc acessar as funcoes da DLL diretamente? O uso do arquivo dllbema.c fica complicado pq ao criar uma nova funcao na dll ficamos refem de alguem q possa implementar isso no arq c

Como vc usa o harbour vc pode acessar diretamente as funcoes da dll carregando ela primeiro eh claro.
Marcos Roberto
NetService Software
clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

BemaFI32.DLL x Harbour 2.1

Mensagem por clipsis »

Olá, Marcos. Boa noite!!

Obrigado por responder.

Estou tentando,acessar as funcoes da DLL diretamente, como vc disse.
O único comando que consegui executar foi o da Leitura X. Todos os outros o programa demora e sai do programa derrepente.

Uso:

Código: Selecionar todos

hDLL:=hb_LibLoad("Bemafi32.dll")

st0:=hb_DynCall({"Bematech_FI_LeituraX", hDLL, HB_DYN_CALLCONV_CDECL})

hb_LibFree(hDLL)
Esse foi o unico que executou. Os comandos em que tenho que passar ou receber parametros, acontece o descrito acima (demora e de repente saii do programa)

Você usa a DLL BemaFI32 com o Harbour ? Poderia me passar exemplos de como, por exemplo:

Abraços
Clipper 5.2/Blinker
Harbour 3.0/Mingw
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

BemaFI32.DLL x Harbour 2.1

Mensagem por marcos.gurupi »

Ola amigo, eu uso o xharbour 1.0.0

Com o xhb tenho problemas com a funcao que puxa a memoria fiscal, mas outros comandos ele funciona normalmente. Se o exemplo em xhb ajudar eu posso postar aqui.
Marcos Roberto
NetService Software
clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

BemaFI32.DLL x Harbour 2.1

Mensagem por clipsis »

Olá, Marcos. Boa noite!!

Obrigado por responder, novamente.

Se puder postar como você, mesmo sendo em xhb, eu agradeceria. Pelos menos eu teria algum ponto de partida.

Desde já agradeço.

Abraços
Clipper 5.2/Blinker
Harbour 3.0/Mingw
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

BemaFI32.DLL x Harbour 2.1

Mensagem por marcos.gurupi »

Caro vou postar os comandos que uso para montar o mapa resumo. Segue abaixo:

Aqui eu carrego a dll:

Código: Selecionar todos

DllBem:= LoadLibrary("BEMAFI32.dll")
Observe que os comandos abaixo tem funcoes do arquivo dllbema.c e da propria dll

Código: Selecionar todos

     iRetorno:= dllcall(DllBem,32,"Bematech_FI_Descontos",vDescontosTotal)
      If iRetorno # 1
         ok := Ver_ECFError(iRetorno)
      Endif
      iRetorno:= dllcall(DllBem,32,"Bematech_FI_Cancelamentos",vCancelamentosTotal)
      If iRetorno # 1
         ok := Ver_ECFError(iRetorno)
      Endif

      iRetorno = Bematech_FI_ReducaoZ("","") 
      If iRetorno # 1
         ok := Ver_ECFError(iRetorno)
      else
         msginfo("Comando Executado com Sucesso.","Aviso")
      Endif
      iRetorno:= dllcall(DllBem,32,"Bematech_FI_InicioFimCOOsMFD",cCOOInicial,cCOOFinal)
      If iRetorno # 1
         ok := Ver_ECFError(iRetorno)
      Endif
      iRetorno:= dllcall(DllBem,32,"Bematech_FI_GrandeTotal",vGrandeTotal)
      If iRetorno # 1
         ok := Ver_ECFError(iRetorno)
      Endif
Aqui eu fecho a dll:

Código: Selecionar todos

FreeLibrary(DLLBem)

Espero ter ajudado.
Marcos Roberto
NetService Software
clipsis
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 02 Jun 2010 11:53
Localização: brasil

BemaFI32.DLL x Harbour 2.1

Mensagem por clipsis »

Olá, Marcos. Boa noite!!

Tentei os exemplos que vc passou, mas quando compilo com o HBMK2, aparece que DLLCALL não definido.

Alguém sabe se preciso adicionar alguma LIB a mais no Harbour.

Só lembando, uso o Harbour 2.1 com MinGW.

Abraços
Clipper 5.2/Blinker
Harbour 3.0/Mingw
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

BemaFI32.DLL x Harbour 2.1

Mensagem por marcos.gurupi »

Caro, dllcall() eh soh no xharbour mesmo. Eu sei, no harbour tem uma funcao que tem a mesma funcionalidade, inclusive eu jah abri um exemplo na pasta do harbour que utiliza essa funcao, nao me lembro mais o nome do arquivo. Mas afirmo pra vc q tem.
Marcos Roberto
NetService Software
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

BemaFI32.DLL x Harbour 2.1

Mensagem por lucimauro »

A função é essa :

nlib32:=dllload("bemafi32.dll")
ecf_ligada:=DllCall( nLib32, 32, "Bematech_FI_VerificaImpressoraLigada")
Responder