erro com dll bemafi32.ini

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

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

erro com dll bemafi32.ini

Mensagem por Pablo César »

Tente então, utilizar a IDE, gerando em modo console com a versão 3.0.35. Ou então usando a versão 3.0.41, coloque no inicio do programa:

Código: Selecionar todos

#include "hmg.ch"

REQUEST HB_GT_WIN_DEFAULT

Function Main()
SetMode(25,80)
Daí irá gerar como no modo console.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

erro com dll bemafi32.ini

Mensagem por pena »

assim que tenho funcionando, olha, no clipper eu uso como o bemafi.exe, no harbour nao daria pra usar assim? vi que deu alguns erros, e por ser 32 bits, eu optei de cara em usar a dll, pq achei que iria ser mais simples, mas ja vi que ta complicado, acho que vou tentar de outra forma, quanto ao que vc postou anteriormente, vou testar entao, so que fiquei preocupado que de depois q mudei a versao, piorou as coisas, sem a rotina da bematech, até compila, mas quando eu vou executar, o exe se instala no gerenciar de tarefas, mas nao abre o programa, dae eu compilei com modo debugador, ae ele abre, nao sei mais o que fazer, to ficando bem doido

Código: Selecionar todos

/ --------------------------------------------------------------------------.
// Arquivo..: Bematech.PRG --------------------------------------------------.
// Funcao...: Depositario das funcoes de acesso a DLL Bemafi32 --------------.
// Uso......: Controle da impressora fiscal BEMATECH ------------------------.
// Data.....: 19/01/2005 ----------------------------------------------------.
// --------------------------------------------------------------------------.

//#INCLUDE "WFCAIXA.CH"
#INCLUDE "INKEY.CH"
#INCLUDE "MINIGUI.CH"
//#INCLUDE "WINPRINT.CH"

FUNCTION bemafiserie(bemafiserie)
// Funcao...: Ler o n£mero de s‚rie do ECF BEMATECH -------------------------.
NumeroSerie := SPACE(15)
//retornacomando := Bematech_FI_NumeroSerie(NumeroSerie)
retornacomando := Bematech_FI_NumeroSerie()
retornacomando := pegaestatus(retornacomando)
variaretorno   := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
&bemafiserie.  := ALLTRIM(variaretorno)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de ler o n£mero de s‚rie do ECF BEMATECH -------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafidatahora(bemafidata,bemafihora)
// Funcao....: Ler a Data e a Hora do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_DataHoraImpressora()
retornacomando := pegaestatus(retornacomando)
variaretorno := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
&bemafidata.   := SUBSTR(variaretorno,1,6)
&bemafihora.   := SUBSTR(variaretorno,8,6)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de ler a data e a hora do ECF BEMATECH ---------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafitestapapel
// Funcao....: Veirificar o numero de linhas ap¢s pouco papel ---------------.
retornacomando := Bematech_FI_MonitoramentoPapel()
retornacomando := pegaestatus(retornacomando)
variaretorno   := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
faltalinha := 366-VAL(ALLTRIM(variaretorno))
erro('O ECF BEMATECH est  com Pouco Papel.  aconselh vel encerrar o movimento e emitir uma Leitura X e trocar a bobina. Faltam apenas ' + ALLTRIM(STR(faltalinha)) + ' linhas na bobina. Talvez nÆo seja o suficiente.')
RETURN(retornacomando)
// Fim da fun‡Æo de testar o estado do papel --------------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafinumerocf(bemafinumerocf)
// Funcao...: Ler o n£mero do £ltimo CF para ECF BEMATECH -------------------.
retornacomando := Bematech_FI_NumeroCupom(bemafinumerocf)

//retornacomando := pegaestatus(retornacomando)
//variaretorno   := SPACE(50)
//Bematech_FI_LeArquivoRetorno(variaretorno)
//&bemafinumerocf.  := ALLTRIM(variaretorno)
//IF ecfpoucopapel
 //  ecfpoucopapel := .F.
 //  bemafitestapapel()
//ENDIF
RETURN(retornacomando)

FUNCTION bemafinumecaixa(bemafinumerocaixa)
// Funcao...: Ler o n£mero do £ltimo CF para ECF BEMATECH -------------------.
retornacomando := Bematech_FI_NumeroCaixa(bemafinumerocaixa)

//retornacomando := pegaestatus(retornacomando)
//variaretorno   := SPACE(50)
//Bematech_FI_LeArquivoRetorno(variaretorno)
//&bemafinumerocaixa.  := ALLTRIM(variaretorno)
//IF ecfpoucopapel
//   ecfpoucopapel := .F.
 //  bemafitestapapel()
//ENDIF

RETURN(retornacomando)


// Fim da funcao de ler o n£mero do £ltimo CF para ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION bemafileiturax()
// Funcao...: Imprimir a Leitura X do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_LeituraX()
retornacomando := pegaestatus(retornacomando)
RETURN(retornacomando)
// Fim da funcao de imprimir a leitura X do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiiniciadia(viniciadia)
// Funcao...: Iniciar o dia no ECF BEMATECH ---------------------------------.
IF viniciadia == NIL .OR. EMPTY(viniciadia)
   viniciadia := '0'
ENDIF
bemasuprimento := viniciadia
bemaformasupri := 'Dinheiro'
retornacomando := Bematech_FI_AberturaDoDia(bemasuprimento,'Dinheiro')
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de inicio do dia no ECF BEMATECH ---------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiadicionaal(bemaaliquota,bemaimposto)
// Funcao...: Programar aliquota de impostos em ECF BEMATECH ----------------.
retornacomando := Bematech_FI_ProgramaAliquota(bemaaliquota,bemaimposto)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar aliquota de impostos no ECF BEMATECH ----------.
// --------------------------------------------------------------------------.
FUNCTION bemafiultimocf
// Funcao...: Cancelar o ultimo CF do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_CancelaCupom()
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de cancelar o ultimo CF do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafireducaoz
// Funcao...: Efetuar a reducao Z no ECF BEMATECH ---------------------------.
bemadata := DTOC(DATE())
bemahora := TIME()
retornacomando := Bematech_FI_ReducaoZ(bemadata,bemahora)
RETURN(retornacomando)
// Fim da funcao de emitir reducao Z do ECF BEMATECH ------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemacabecalho(bemadocumento)
// Funcao...: Imprimir o cabecalho do ECF BEMATECH --------------------------.
IF bemadocumento == NIL .OR. EMPTY(bemadocumento)
   bemadocumento := SPACE(0)
ENDIF
retornacomando := Bematech_FI_AbreCupom(bemadocumento)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de imprimir o cabecalho do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemaitemvendido(bemacodigo,bemadescricao,bemaaliquota,bematipoquan,bemaquantidade,bemacasas,bemaunitario,bematipodesc,bemadesconto)
priv ack:=0,st1:=0,st2:=0
// Funcao...: Imprimir um item no ECF BEMATECH ------------------------------.
RETORNACOMANDO := 0
retornacomando := Bematech_FI_VendeItem(bemacodigo,bemadescricao,bemaaliquota,bematipoquan,bemaquantidade,bemacasas,bemaunitario,bematipodesc,bemadesconto)
//retornacomando := pegaestatus(retornacomando)
ACK:=0
ST1:=0
ST2:=0
//Chk_Retorno()

//ecfpoucopapel := .F.
//bemafitestapapel()
RETURN(retornacomando)
// Fim da funcao de imprimir um item no ECF BEMATECH ------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemaficancelaitem(bemaitemcancela)
// Funcao...: Cancelar um item gen‚rico no ECF BEMATECH ---------------------.
retornacomando := Bematech_FI_CancelaItemGenerico(bemaitemcancela)
RETURN(retornacomando)
// Fim da funcao de cancelar um item gen‚rico no ECF BEMATECH ---------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiiniciafecha(bemadescoacres,bematipodescoacres,bemavaldescoacres)
// Funcao...: Iniciar o fechamento do cupom no ECF BEMATECH -----------------.
retornacomando := Bematech_FI_IniciaFechamentoCupom(bemadescoacres,bematipodescoacres,bemavaldescoacres)
retornacomando := pegaestatus(retornacomando)
RETURN(retornacomando)
// Fim da funcao de iniciar o fechamento do cupom no ECF BEMATECH -----------.
// --------------------------------------------------------------------------.
FUNCTION bemafisubtotal(bemafisubtotal)
// Funcao...: Executa o subtotal do ECF BEMATECH ----------------------------.
bemasubtotal := SPACE(14)
retornacomando := Bematech_FI_SubTotal(bemasubtotal)
retornacomando := pegaestatus(retornacomando)
&bemafisubtotal. := bemasubtotal
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de executar o subtotal no ECF BEMATECH ---------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiefetuaforma(bemaformapaga,bemaformavalor)
// Funcao...: Executa a efetua‡Æo da forma para ECF BEMATECH ----------------.
bemasubtotal := SPACE(14)
retornacomando := Bematech_FI_EfetuaFormaPagamento(bemaformapaga,bemaformavalor)
RETURN(retornacomando)
// Fim da funcao de executar a forma de pagamento para ECF BEMATECH ---------.
// --------------------------------------------------------------------------.
FUNCTION bemafiterminacupom(termina1,termina2,termina3,termina4,termina5,termina6,termina7,termina8)
// Funcao...: Terminar o fechamento do CF no ECF BEMATECH -------------------.
// Igualando as mensagens a 48 colunas --------------------------------------.
termina1 := termina1 + SPACE(48)
termina2 := termina2 + SPACE(48)
termina3 := termina3 + SPACE(48)
termina4 := termina4 + SPACE(48)
termina5 := termina5 + SPACE(48)
termina6 := termina6 + SPACE(48)
termina7 := termina7 + SPACE(48)
termina8 := termina8 + SPACE(48)
termina1 := SUBSTR(termina1,1,48)
termina2 := SUBSTR(termina2,1,48)
termina3 := SUBSTR(termina3,1,48)
termina4 := SUBSTR(termina4,1,48)
termina5 := SUBSTR(termina5,1,48)
termina6 := SUBSTR(termina6,1,48)
termina7 := SUBSTR(termina7,1,48)
termina8 := SUBSTR(termina8,1,48)
// Mensagens igualadas a 48 colunas -----------------------------------------.
bemamensagem := termina1 + termina2 + termina3 + termina4 + termina5 + termina6 + termina7 + termina8
IF EMPTY(bemamensagem)
   bemamensagem := 'VENDA AO CONSUMIDOR.                            '
   bemamensagem := bemamensagem + 'VOLTE SEMPRE.                                   '
   IF MONTH(DATE()) == 12
      bemamensagem := bemamensagem + 'FELIZ NATAL E PRàSPERO ANO NOVO.                 '
   ENDIF
ENDIF
retornacomando := Bematech_FI_TerminaFechamentoCupom(bemamensagem)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de terminar o fechamento do CF no ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION bemafimemoriadata(bemadataini,bemadatafim,bemasaida)
// Funcao...: Emite a leitura da Mem¢ria Fiscal por datas no ECF BEMATECH ---.
retornacomando := Bematech_FI_LeituraMemoriaFiscalData(bemadataini,bemadatafim,bemasaida)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de leitura de memoria fiscal por datas no ECF BEMATECH -----.
// --------------------------------------------------------------------------.
FUNCTION bemafimemoriareducao(bemareducaoini,bemareducaofim,bemasaida)
// Funcao...: Emite a leitura da Mem¢ria Fiscal por redu‡äes no ECF BEMATECH .
retornacomando := Bematech_FI_LeituraMemoriaFiscalReducao(bemareducaoini,bemareducaofim,bemasaida)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de leitura de memoria fiscal por redu‡äes no ECF BEMATECH --.
// --------------------------------------------------------------------------.
FUNCTION bemafialiquota(bemaaliquota,bemaimposto)
// Funcao...: Programa al¡quota de imposto no ECF BEMATECH ------------------.
retornacomando := Bematech_FI_ProgramaAliquota(bemaaliquota,bemaimposto)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar aliquota de imposto no ECF BEMATECH -----------.
// --------------------------------------------------------------------------.
FUNCTION bemafihoraverao
// Funcao...: Programa horario de verÆo no ECF BEMATECH ---------------------.
retornacomando := Bematech_FI_ProgramaHorarioVerao()
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar horario de verÆo no ECF BEMATECH --------------.
// --------------------------------------------------------------------------.
FUNCTION bemafisuprimento(bemasuprimento,bemaformasupri)
// Funcao...: Enviar suprimento de caixa para o ECF BEMATECH ----------------.
retornacomando := Bematech_FI_Suprimento(bemasuprimento,bemaformasupri)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de enviar suprimento de caixa para o ECF BEMATECH ----------.
// --------------------------------------------------------------------------.
FUNCTION bemafisangria(bemasangria)
// Funcao...: Enviar sangria de caixa para o ECF BEMATECH -------------------.
retornacomando := Bematech_FI_Sangria(bemasangria)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de enviar sangria de caixa para o ECF BEMATECH -------------.
// --------------------------------------------------------------------------.

FUNCTION abrenaofiscal(fPagamento,fValor,fNumero)
// Funcao...: Abre cupom nao fiscal                       -------------------.
retornacomando := Bematech_FI_AbreComprovanteNaoFiscalVinculado(fPagamento,fValor,fNumero)
RETURN(retornacomando)

FUNCTION imprimenaofiscal(fLinha)
// Funcao...: Imprime linha nao fiscal     -------------------.
retornacomando := Bematech_FI_UsaComprovanteNaoFiscalVinculado(fLinha)
RETURN(retornacomando)

FUNCTION fechanaofiscal()
// Funcao...: Abre cupom nao fiscal                       -------------------.
retornacomando := Bematech_FI_FechaComprovanteNaoFiscalVinculado()
RETURN(retornacomando)

FUNCTION pegaestatus(pegastatus)
// Funcao....: Verificar o arquivo STATUS.TXT gravado em C:\ ----------------.
IF pegastatus == NIL
   RETURN({.F.,'Sem retorno',''})
ELSE
   IF VALTYPE(pegastatus) == 'N'
      IF pegastatus == 0
         RETURN({.F.,'Erro de comunica‡Æo.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
      ELSEIF pegastatus == -2
         RETURN({.F.,'Parƒmetro inv lido na fun‡Æo.','Verifique os tipos STRING e INTEIRO.'})
      ELSEIF pegastatus == -3
         RETURN({.F.,'Al¡quota de imposto nÆo programada.','Ap¢s o Fechamento do CF programe a nova Al¡quota.'})
      ELSEIF pegastatus == -4
         RETURN({.F.,'Bemafi32.INI nÆo encontrado.','O Arquivo Bemafi32.DLL deve estar na pasta ' + GETSYSTEMFOLDER()})
      ELSEIF pegastatus == -5
         RETURN({.F.,'NÆo foi poss¡vel abrir a Porta de Comunica‡Æo.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
      ELSEIF pegastatus == -6
         RETURN({.F.,'A Impressora Fiscal est  desligada ou o Cabo de Comunica‡Æo Serial est  Desconectado',''})
      ELSEIF pegastatus == -8
         RETURN({.F.,'Erro em arquivos de Retorno.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
      ELSEIF pegastatus == -9
         RETURN({.F.,'Erro ao Fechar a Porta Serial.',''})
      ELSEIF pegastatus == -24
         RETURN({.F.,'Forma de Pagamento nÆo programada.',''})
      ELSEIF pegastatus == -25
         RETURN({.F.,'Totalizador nÆo Fiscal nÆo programado.',''})
      ELSEIF pegastatus == -30
         RETURN({.F.,'Fun‡Æo nÆo compat¡vel com impressora YANCO.',''})
      ENDIF
   ELSE
      RETURN({.F.,'Retorno desconhecido',''})
   ENDIF                  
ENDIF
arqstatus := 'C:\STATUS.TXT'
IF .NOT. FILE((arqstatus))
   RETURN({.F.,'O arquivo STATUS.TXT nÆo foi localizado em C:\.','A Impressora fiscal deve estar desligada ou desconectada.'})
ELSE
   conteudostatus := MEMOREAD((arqstatus))
   linhastatus1   := ALLTRIM(MEMOLINE(conteudostatus,,1))
   largura1       := LEN(linhastatus1)   
   virgula1       := 0
   virgula2       := 0
   FOR contavar := 1 TO largura1
      varconta := SUBSTR(linhastatus1,contavar,1)
      IF varconta == ',' .AND. virgula1 == 0
         virgula1 := contavar
      ELSEIF varconta == ',' .AND. virgula1 > 0
         virgula2 := contavar   
      ENDIF
   NEXT contavar
ENDIF
aack := VAL(SUBSTR(linhastatus1,1,(virgula1-1)))
ast1 := VAL(SUBSTR(linhastatus1,(virgula1+1),(virgula2-1)))
ast2 := VAL(SUBSTR(linhastatus1,(virgula2+1),(largura1-(virgula2-1))))
// Inicio o calculo de ST1
msgst1 := SPACE(0)
ecfpoucopapel := .F.
IF ast1 >= 128
   ast1   := ast1 - 128
   msgst1 := 'Fim de Papel'
ENDIF   
IF ast1 >= 64
   ecfpoucopapel := .T.
   ast1   := ast1 - 64
   msgst1 := 'Pouco Papel'
ENDIF   
IF ast1 >= 32
   ast1   := ast1 - 32
   msgst1 := 'Erro no rel¢gio'
ENDIF   
IF ast1 >= 16
   ast1   := ast1 - 16
   msgst1 := 'Impressora em erro'
ENDIF   
IF ast1 >= 8
   ast1   := ast1 - 8
   msgst1 := 'Comando nÆo iniciado com ESC (CHR927))' 
ENDIF   
IF ast1 >= 4
   ast1   := ast1 - 4
   msgst1 := 'Comando inixistente'
ENDIF   
IF ast1 >= 2
   ast1   := ast1 - 2
   msgst1 := 'Cupom aberto'
ENDIF   
IF ast1 >= 1
   ast1   := ast1 - 1
   msgst1 := 'N£mero de parƒmetros inv lidos'
ENDIF   
// Inicio o calculo de ST2
msgst2 := SPACE(0)
IF ast2 >= 128
   ast2   := ast2 - 128
   msgst2 := 'Tipo de parƒmetro de comando inv lido'
ENDIF   
IF ast2 >= 64
   ast2   := ast2 - 64
   msgst2 := 'Mem¢ria fiscal cheia'
ENDIF   
IF ast2 >= 32
   ast2   := ast2 - 32
   msgst2 := 'Erro na mem¢ria RAM'
ENDIF   
IF ast2 >= 16
   ast2   := ast2 - 16
   msgst2 := 'Al¡quota nÆo propgramada'
ENDIF   
IF ast2 >= 8
   ast2   := ast2 - 8
   msgst2 := 'Capacidade m xima de al¡quotas atingido' 
ENDIF
IF ast2 >= 4
   ast2   := ast2 - 4
   msgst2 := 'Cancelamento nÆo permitido'
ENDIF   
IF ast2 >= 2
   ast2   := ast2 - 2
   msgst2 := 'CNPJ/IE do propriet rio nÆo programado'
ENDIF   
IF ast2 >= 1
   ast2   := ast2 - 1
   msgst2 := 'Comando nÆo executado'
ENDIF   
FERASE((arqstatus))
ast12 := .T.
IF .NOT. EMPTY(msgst1)
   IF ecfpoucopapel
      ast12 := .T.
   ELSE
      ast12 := .F.
   ENDIF   
ENDIF   
IF .NOT. EMPTY(msgst2)
   ast12 := .F.
ENDIF   
RETURN({ast12,msgst1,msgst2})

Function Chk_Retorno
Local liga,ack,st1,st2,msg1,msg2

ack:= i2bin(0)
st1:= i2bin(0)
st2:= i2bin(0)

//liga:= dllcall("BEMAFI32.DLL",32,"Bematech_FI_RetornoImpressora",ack,st1,st2)

msg1:= bin2i(St1)
msg2:= bin2i(St2)
MsgSTOP(" ST1 "+msg1+" ST2 "+msg2,"CODIGO")
// Fim da funcao de testar o arquivo STATUS.TXT -----------------------------.
// --------------------------------------------------------------------------.
// Chamadas para DLL --------------------------------------------------------.
// Manipula‡Æo do cupom fiscal
DECLARE DLL_TYPE_INT Bematech_FI_AbreCupom(DLL_TYPE_LPCSTR bemadocumento) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_VendeItem(DLL_TYPE_LPCSTR bemacodigo,DLL_TYPE_LPCSTR bemadescricao,DLL_TYPE_LPCSTR bemaaliquota,DLL_TYPE_LPCSTR bematipoquan,DLL_TYPE_LPCSTR bemaquantidade,DLL_TYPE_INT bemacasas,DLL_TYPE_LPCSTR bemaunitario,DLL_TYPE_LPCSTR bematipodesc,DLL_TYPE_LPCSTR bemadesconto) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_CancelaItemGenerico(DLL_TYPE_LPCSTR bemaitemcancela) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_IniciaFechamentoCupom(DLL_TYPE_LPCSTR bemadescoacres,DLL_TYPE_LPCSTR bematipodescoacres,DLL_TYPE_LPCSTR bemavaldescoacres) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_SubTotal(DLL_TYPE_LPCSTR bemasubtotal) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_EfetuaFormaPagamento(DLL_TYPE_LPCSTR bemaformapaga,DLL_TYPE_LPCSTR bemaformavalor) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_TerminaFechamentoCupom(DLL_TYPE_LPCSTR bemamensagem) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_CancelaCupom() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaFormaPagamentoMFD(DLL_TYPE_LPCSTR bemaformapaga,DLL_TYPE_LPCSTR bemaformatef) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_AberturaDoDia(DLL_TYPE_LPCSTR bemasuprimento,DLL_TYPE_LPCSTR bemaformasupri) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_Suprimento(DLL_TYPE_LPCSTR bemasuprimento,DLL_TYPE_LPCSTR bemaformasupri) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_Sangria(DLL_TYPE_LPCSTR bemasangria) IN BEMAFI32.DLL
// Verifica o numero de s‚rie, data, hora e numero do ultimo cupom
//DECLARE DLL_TYPE_INT Bematech_FI_NumeroSerie(DLL_TYPE_LPCSTR NumeroSerie) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroSerie() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_DataHoraImpressora() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroCaixa(DLL_TYPE_LPCSTR bemafinumerocaixa) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroCupom(DLL_TYPE_LPCSTR bemafinumerocf) IN BEMAFI32.DLL
// Relat¢rios
DECLARE DLL_TYPE_INT Bematech_FI_ReducaoZ(DLL_TYPE_LPCSTR bemadata,DLL_TYPE_LPCSTR bemahora) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraX() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraMemoriaFiscalData(DLL_TYPE_LPCSTR bemadataini,DLL_TYPE_LPCSTR bemadatafim,DLL_TYPE_LPCSTR bemasaida) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraMemoriaFiscalReducao(DLL_TYPE_LPCSTR bemareducaoini,DLL_TYPE_LPCSTR bemareducaofim,DLL_TYPE_LPCSTR bemasaida) IN BEMAFI32.DLL
// Programa‡Æo de estado
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaAliquota(DLL_TYPE_LPCSTR bemaaliquota,DLL_TYPE_LPCSTR bemaimposto) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaHorarioVerao() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_RetornoImpressora(DLL_TYPE_INT Ack,DLL_TYPE_INT St1,DLL_TYPE_INT St2) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_MonitoramentoPapel() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_VerificaEstadoImpressoraStr() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeArquivoRetorno(DLL_TYPE_LPCSTR variaretorno) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_AbreComprovanteNaoFiscalVinculado(DLL_TYPE_LPCSTR fPagamento,DLL_TYPE_LPCSTR fValor,DLL_TYPE_LPCSTR fNumero) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_UsaComprovanteNaoFiscalVinculado(DLL_TYPE_LPCSTR fLinha) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_FechaComprovanteNaoFiscalVinculado() IN BEMAFI32.DLL
// --------------------------------------------------------------------------.


FUNCTION ERRO(PARI)
MsgSTOP(pari,"Cupom")
return nil



Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

erro com dll bemafi32.ini

Mensagem por Pablo César »

mas quando eu vou executar, o exe se instala no gerenciar de tarefas, mas nao abre o programa
kkkk isso acontece porque você está tentando executar uma aplicação que foi gerada em modo GUI (gráfico) e você está utilizando @ say... Tem que inserir as linhas que te passei na minha mensagem anterior. Aí você vai ver que funciona. Isso já não acontece, se você utiliza-se a IDE da versão 3.0.35 e setar a opção modo console. Nesta ultima versão, a IDE não tem isso, reparou ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

erro com dll bemafi32.ini

Mensagem por pena »

AGORA sim voltou a funcionar rsrsrs, mas continua o erro quando executa este comando
HINSTANCE handle = LoadLibrary("BEMAFI32.DLL")
DA O erro aquele de sempre e cai fora
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

erro com dll bemafi32.ini

Mensagem por Imatech »

#
# arquivo hbp
# compilar com hbmk2.exe MeuApp.hbp
#
# outras dúvidas:
# hbmk2.exe -help > Manual.txt (Leia o arquivo gerado)
#

#
# Flags do compilador
#
-prgflag=/m
-prgflag=/n
-prgflag=/w1

#
# Diretivas para compilação incremental
#
-inc

#
# Pasta Arquivos Temporarios
#
-workdir=C:\MeuProjeto\OBJ

#
# include adicionais
#
-iC:\MeuProjeto\Include

#
# Lib adicionais
#
-LC:\MeuProjeto\Lib

#
# Console/Gui
# -std
-gui

#
# Metodo de Compressão UPX
#
# -compr=def

#
# Pausa em caso de avisos na compilação
#
-pause

#
# Executar ao finalizar a compilação
#
# -run

#
# gt class
# -gtwvg
-gtwvt

#
# definimos a(s) lib(s) a ser(em) linkada(s)
#
-lhbwin
-lhbct
-lhbmisc

#
# definimos o nome da aplicação
#
-oMeuApp.EXE

#
# prg principal
#
MeuApp.prg

#
# prg(s) adicional(is)
#
Funcoes.prg
Rotinas.prg
Etc.prg

#
# Fontes em linguagem c
#
dll_bematech.c

#
# .rc Files
#
# MeuApp.rc
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

erro com dll bemafi32.ini

Mensagem por Pablo César »

erro quando executa este comando
HINSTANCE handle = LoadLibrary("BEMAFI32.DLL")
DA O erro aquele de sempre e cai fora
E você poderia dizer qual é o erro que está dando ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

erro com dll bemafi32.ini

Mensagem por pena »

aquele mesmo de sempre aqui da o seguinte erro
0x10000000 0x000C7000 C:\TESTE\BEMAFI32.DLL

Called From DLLCALL(0)
Called From Main(23) in C:\TESTE\Teste.prg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

erro com dll bemafi32.ini

Mensagem por Pablo César »

Será que a sua DLL não está com problemas ? Eu anexei parte do arquivos que continham no BemaFI32 e nclusive achei um arquivo chm que irá ajudar nas sintaxe. Demais, acho que você poderia entrar em contato com eles e relatar-lhes esse erro:

Suporte Técnico
. 0800 644 SBSP (7277)
. MSN e E-mail:
. andre.schikovski@bematech.com.br
. iohannes.nakatani@bematech.com.br
. henrique.massucheto@bematech.com.br
. SKYPE:
. suporte.andre.luiz
. suporte.iohannes
. suporte.henrique.massucheto
Contate a Equipe do BSP: partners@bematech.com.br
Horário de atendimento: das 8h30 ao 12h30 e das 14 as 18h, de segunda a sexta-feira, exceto feriados.
Anexos
bemafi32 .rar
(1.17 MiB) Baixado 128 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

erro com dll bemafi32.ini

Mensagem por Imatech »

Outra questão:

A DLL esta devidamente registrada no Windows ?
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

erro com dll bemafi32.ini

Mensagem por pena »

minha duvida e a seguinte pq com meu outro programa em minigui funciona?
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

erro com dll bemafi32.ini

Mensagem por Imatech »

Veja os arquivos Header (*.ch) contidos nos 2 sistemas...

O outro progr que vc diz... trabalha com a mesma DLL ?
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

erro com dll bemafi32.ini

Mensagem por pena »

trabalha com a mesma dll segue o codigo

Código: Selecionar todos

#INCLUDE "INKEY.CH"
#INCLUDE "MINIGUI.CH"

FUNCTION bemafiserie(bemafiserie)
// Funcao...: Ler o n£mero de s‚rie do ECF BEMATECH -------------------------.
NumeroSerie := SPACE(15)
//retornacomando := Bematech_FI_NumeroSerie(NumeroSerie)
retornacomando := Bematech_FI_NumeroSerie()
retornacomando := pegaestatus(retornacomando)
variaretorno   := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
&bemafiserie.  := ALLTRIM(variaretorno)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de ler o n£mero de s‚rie do ECF BEMATECH -------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafidatahora(bemafidata,bemafihora)
// Funcao....: Ler a Data e a Hora do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_DataHoraImpressora()
retornacomando := pegaestatus(retornacomando)
variaretorno := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
&bemafidata.   := SUBSTR(variaretorno,1,6)
&bemafihora.   := SUBSTR(variaretorno,8,6)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de ler a data e a hora do ECF BEMATECH ---------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafitestapapel
// Funcao....: Veirificar o numero de linhas ap¢s pouco papel ---------------.
retornacomando := Bematech_FI_MonitoramentoPapel()
retornacomando := pegaestatus(retornacomando)
variaretorno   := SPACE(50)
Bematech_FI_LeArquivoRetorno(variaretorno)
faltalinha := 366-VAL(ALLTRIM(variaretorno))
erro('O ECF BEMATECH est  com Pouco Papel.  aconselh vel encerrar o movimento e emitir uma Leitura X e trocar a bobina. Faltam apenas ' + ALLTRIM(STR(faltalinha)) + ' linhas na bobina. Talvez nÆo seja o suficiente.')
RETURN(retornacomando)
// Fim da fun‡Æo de testar o estado do papel --------------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafinumerocf(bemafinumerocf)
// Funcao...: Ler o n£mero do £ltimo CF para ECF BEMATECH -------------------.
retornacomando := Bematech_FI_NumeroCupom(bemafinumerocf)

//retornacomando := pegaestatus(retornacomando)
//variaretorno   := SPACE(50)
//Bematech_FI_LeArquivoRetorno(variaretorno)
//&bemafinumerocf.  := ALLTRIM(variaretorno)
//IF ecfpoucopapel
 //  ecfpoucopapel := .F.
 //  bemafitestapapel()
//ENDIF
RETURN(retornacomando)

FUNCTION bemafinumecaixa(bemafinumerocaixa)
// Funcao...: Ler o n£mero do £ltimo CF para ECF BEMATECH -------------------.
retornacomando := Bematech_FI_NumeroCaixa(bemafinumerocaixa)

//retornacomando := pegaestatus(retornacomando)
//variaretorno   := SPACE(50)
//Bematech_FI_LeArquivoRetorno(variaretorno)
//&bemafinumerocaixa.  := ALLTRIM(variaretorno)
//IF ecfpoucopapel
//   ecfpoucopapel := .F.
 //  bemafitestapapel()
//ENDIF

RETURN(retornacomando)


// Fim da funcao de ler o n£mero do £ltimo CF para ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION bemafileiturax()
// Funcao...: Imprimir a Leitura X do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_LeituraX()
retornacomando := pegaestatus(retornacomando)
RETURN(retornacomando)
// Fim da funcao de imprimir a leitura X do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiiniciadia(viniciadia)
// Funcao...: Iniciar o dia no ECF BEMATECH ---------------------------------.
IF viniciadia == NIL .OR. EMPTY(viniciadia)
   viniciadia := '0'
ENDIF
bemasuprimento := viniciadia
bemaformasupri := 'Dinheiro'
retornacomando := Bematech_FI_AberturaDoDia(bemasuprimento,'Dinheiro')
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de inicio do dia no ECF BEMATECH ---------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiadicionaal(bemaaliquota,bemaimposto)
// Funcao...: Programar aliquota de impostos em ECF BEMATECH ----------------.
retornacomando := Bematech_FI_ProgramaAliquota(bemaaliquota,bemaimposto)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar aliquota de impostos no ECF BEMATECH ----------.
// --------------------------------------------------------------------------.
FUNCTION bemafiultimocf
// Funcao...: Cancelar o ultimo CF do ECF BEMATECH --------------------------.
retornacomando := Bematech_FI_CancelaCupom()
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de cancelar o ultimo CF do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafireducaoz
// Funcao...: Efetuar a reducao Z no ECF BEMATECH ---------------------------.
bemadata := DTOC(DATE())
bemahora := TIME()
retornacomando := Bematech_FI_ReducaoZ(bemadata,bemahora)
RETURN(retornacomando)
// Fim da funcao de emitir reducao Z do ECF BEMATECH ------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemacabecalho(bemadocumento)
// Funcao...: Imprimir o cabecalho do ECF BEMATECH --------------------------.
IF bemadocumento == NIL .OR. EMPTY(bemadocumento)
   bemadocumento := SPACE(0)
ENDIF
retornacomando := Bematech_FI_AbreCupom(bemadocumento)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de imprimir o cabecalho do ECF BEMATECH --------------------.
// --------------------------------------------------------------------------.
FUNCTION bemaitemvendido(bemacodigo,bemadescricao,bemaaliquota,bematipoquan,bemaquantidade,bemacasas,bemaunitario,bematipodesc,bemadesconto)
priv ack:=0,st1:=0,st2:=0
// Funcao...: Imprimir um item no ECF BEMATECH ------------------------------.
RETORNACOMANDO := 0
retornacomando := Bematech_FI_VendeItem(bemacodigo,bemadescricao,bemaaliquota,bematipoquan,bemaquantidade,bemacasas,bemaunitario,bematipodesc,bemadesconto)
//retornacomando := pegaestatus(retornacomando)
ACK:=0
ST1:=0
ST2:=0
//Chk_Retorno()

//ecfpoucopapel := .F.
//bemafitestapapel()
RETURN(retornacomando)
// Fim da funcao de imprimir um item no ECF BEMATECH ------------------------.
// --------------------------------------------------------------------------.
FUNCTION bemaficancelaitem(bemaitemcancela)
// Funcao...: Cancelar um item gen‚rico no ECF BEMATECH ---------------------.
retornacomando := Bematech_FI_CancelaItemGenerico(bemaitemcancela)
RETURN(retornacomando)
// Fim da funcao de cancelar um item gen‚rico no ECF BEMATECH ---------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiiniciafecha(bemadescoacres,bematipodescoacres,bemavaldescoacres)
// Funcao...: Iniciar o fechamento do cupom no ECF BEMATECH -----------------.
retornacomando := Bematech_FI_IniciaFechamentoCupom(bemadescoacres,bematipodescoacres,bemavaldescoacres)
retornacomando := pegaestatus(retornacomando)
RETURN(retornacomando)
// Fim da funcao de iniciar o fechamento do cupom no ECF BEMATECH -----------.
// --------------------------------------------------------------------------.
FUNCTION bemafisubtotal(bemafisubtotal)
// Funcao...: Executa o subtotal do ECF BEMATECH ----------------------------.
bemasubtotal := SPACE(14)
retornacomando := Bematech_FI_SubTotal(bemasubtotal)
retornacomando := pegaestatus(retornacomando)
&bemafisubtotal. := bemasubtotal
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de executar o subtotal no ECF BEMATECH ---------------------.
// --------------------------------------------------------------------------.
FUNCTION bemafiefetuaforma(bemaformapaga,bemaformavalor)
// Funcao...: Executa a efetua‡Æo da forma para ECF BEMATECH ----------------.
bemasubtotal := SPACE(14)
retornacomando := Bematech_FI_EfetuaFormaPagamento(bemaformapaga,bemaformavalor)
RETURN(retornacomando)
// Fim da funcao de executar a forma de pagamento para ECF BEMATECH ---------.
// --------------------------------------------------------------------------.
FUNCTION bemafiterminacupom(termina1,termina2,termina3,termina4,termina5,termina6,termina7,termina8)
// Funcao...: Terminar o fechamento do CF no ECF BEMATECH -------------------.
// Igualando as mensagens a 48 colunas --------------------------------------.
termina1 := termina1 + SPACE(48)
termina2 := termina2 + SPACE(48)
termina3 := termina3 + SPACE(48)
termina4 := termina4 + SPACE(48)
termina5 := termina5 + SPACE(48)
termina6 := termina6 + SPACE(48)
termina7 := termina7 + SPACE(48)
termina8 := termina8 + SPACE(48)
termina1 := SUBSTR(termina1,1,48)
termina2 := SUBSTR(termina2,1,48)
termina3 := SUBSTR(termina3,1,48)
termina4 := SUBSTR(termina4,1,48)
termina5 := SUBSTR(termina5,1,48)
termina6 := SUBSTR(termina6,1,48)
termina7 := SUBSTR(termina7,1,48)
termina8 := SUBSTR(termina8,1,48)
// Mensagens igualadas a 48 colunas -----------------------------------------.
bemamensagem := termina1 + termina2 + termina3 + termina4 + termina5 + termina6 + termina7 + termina8
IF EMPTY(bemamensagem)
   bemamensagem := 'VENDA AO CONSUMIDOR.                            '
   bemamensagem := bemamensagem + 'VOLTE SEMPRE.                                   '
   IF MONTH(DATE()) == 12
      bemamensagem := bemamensagem + 'FELIZ NATAL E PRàSPERO ANO NOVO.                 '
   ENDIF
ENDIF
retornacomando := Bematech_FI_TerminaFechamentoCupom(bemamensagem)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de terminar o fechamento do CF no ECF BEMATECH -------------.
// --------------------------------------------------------------------------.
FUNCTION bemafimemoriadata(bemadataini,bemadatafim,bemasaida)
// Funcao...: Emite a leitura da Mem¢ria Fiscal por datas no ECF BEMATECH ---.
retornacomando := Bematech_FI_LeituraMemoriaFiscalData(bemadataini,bemadatafim,bemasaida)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de leitura de memoria fiscal por datas no ECF BEMATECH -----.
// --------------------------------------------------------------------------.
FUNCTION bemafimemoriareducao(bemareducaoini,bemareducaofim,bemasaida)
// Funcao...: Emite a leitura da Mem¢ria Fiscal por redu‡äes no ECF BEMATECH .
retornacomando := Bematech_FI_LeituraMemoriaFiscalReducao(bemareducaoini,bemareducaofim,bemasaida)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de leitura de memoria fiscal por redu‡äes no ECF BEMATECH --.
// --------------------------------------------------------------------------.
FUNCTION bemafialiquota(bemaaliquota,bemaimposto)
// Funcao...: Programa al¡quota de imposto no ECF BEMATECH ------------------.
retornacomando := Bematech_FI_ProgramaAliquota(bemaaliquota,bemaimposto)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar aliquota de imposto no ECF BEMATECH -----------.
// --------------------------------------------------------------------------.
FUNCTION bemafihoraverao
// Funcao...: Programa horario de verÆo no ECF BEMATECH ---------------------.
retornacomando := Bematech_FI_ProgramaHorarioVerao()
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de programar horario de verÆo no ECF BEMATECH --------------.
// --------------------------------------------------------------------------.
FUNCTION bemafisuprimento(bemasuprimento,bemaformasupri)
// Funcao...: Enviar suprimento de caixa para o ECF BEMATECH ----------------.
retornacomando := Bematech_FI_Suprimento(bemasuprimento,bemaformasupri)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de enviar suprimento de caixa para o ECF BEMATECH ----------.
// --------------------------------------------------------------------------.
FUNCTION bemafisangria(bemasangria)
// Funcao...: Enviar sangria de caixa para o ECF BEMATECH -------------------.
retornacomando := Bematech_FI_Sangria(bemasangria)
retornacomando := pegaestatus(retornacomando)
IF ecfpoucopapel
   ecfpoucopapel := .F.
   bemafitestapapel()
ENDIF
RETURN(retornacomando)
// Fim da funcao de enviar sangria de caixa para o ECF BEMATECH -------------.
// --------------------------------------------------------------------------.

FUNCTION abrenaofiscal(fPagamento,fValor,fNumero)
// Funcao...: Abre cupom nao fiscal                       -------------------.
retornacomando := Bematech_FI_AbreComprovanteNaoFiscalVinculado(fPagamento,fValor,fNumero)
RETURN(retornacomando)

FUNCTION imprimenaofiscal(fLinha)
// Funcao...: Imprime linha nao fiscal     -------------------.
retornacomando := Bematech_FI_UsaComprovanteNaoFiscalVinculado(fLinha)
RETURN(retornacomando)

FUNCTION fechanaofiscal()
// Funcao...: Abre cupom nao fiscal                       -------------------.
retornacomando := Bematech_FI_FechaComprovanteNaoFiscalVinculado()
RETURN(retornacomando)

FUNCTION pegaestatus(pegastatus)
// Funcao....: Verificar o arquivo STATUS.TXT gravado em C:\ ----------------.
IF pegastatus == NIL
   RETURN({.F.,'Sem retorno',''})
ELSE
   IF VALTYPE(pegastatus) == 'N'
      IF pegastatus == 0
         RETURN({.F.,'Erro de comunica‡Æo.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
      ELSEIF pegastatus == -2
         RETURN({.F.,'Parƒmetro inv lido na fun‡Æo.','Verifique os tipos STRING e INTEIRO.'})
      ELSEIF pegastatus == -3
         RETURN({.F.,'Al¡quota de imposto nÆo programada.','Ap¢s o Fechamento do CF programe a nova Al¡quota.'})
      ELSEIF pegastatus == -4
         RETURN({.F.,'Bemafi32.INI nÆo encontrado.','O Arquivo Bemafi32.DLL deve estar na pasta ' + GETSYSTEMFOLDER()})
      ELSEIF pegastatus == -5
         RETURN({.F.,'NÆo foi poss¡vel abrir a Porta de Comunica‡Æo.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
      ELSEIF pegastatus == -6
         RETURN({.F.,'A Impressora Fiscal est  desligada ou o Cabo de Comunica‡Æo Serial est  Desconectado',''})
      ELSEIF pegastatus == -8
         RETURN({.F.,'Erro em arquivos de Retorno.','A Impressora Fiscal deve estar Desligada ou Desconectada do cabo Serial.'})
      ELSEIF pegastatus == -9
         RETURN({.F.,'Erro ao Fechar a Porta Serial.',''})
      ELSEIF pegastatus == -24
         RETURN({.F.,'Forma de Pagamento nÆo programada.',''})
      ELSEIF pegastatus == -25
         RETURN({.F.,'Totalizador nÆo Fiscal nÆo programado.',''})
      ELSEIF pegastatus == -30
         RETURN({.F.,'Fun‡Æo nÆo compat¡vel com impressora YANCO.',''})
      ENDIF
   ELSE
      RETURN({.F.,'Retorno desconhecido',''})
   ENDIF                  
ENDIF
arqstatus := 'C:\STATUS.TXT'
IF .NOT. FILE((arqstatus))
   RETURN({.F.,'O arquivo STATUS.TXT nÆo foi localizado em C:\.','A Impressora fiscal deve estar desligada ou desconectada.'})
ELSE
   conteudostatus := MEMOREAD((arqstatus))
   linhastatus1   := ALLTRIM(MEMOLINE(conteudostatus,,1))
   largura1       := LEN(linhastatus1)   
   virgula1       := 0
   virgula2       := 0
   FOR contavar := 1 TO largura1
      varconta := SUBSTR(linhastatus1,contavar,1)
      IF varconta == ',' .AND. virgula1 == 0
         virgula1 := contavar
      ELSEIF varconta == ',' .AND. virgula1 > 0
         virgula2 := contavar   
      ENDIF
   NEXT contavar
ENDIF
aack := VAL(SUBSTR(linhastatus1,1,(virgula1-1)))
ast1 := VAL(SUBSTR(linhastatus1,(virgula1+1),(virgula2-1)))
ast2 := VAL(SUBSTR(linhastatus1,(virgula2+1),(largura1-(virgula2-1))))
// Inicio o calculo de ST1
msgst1 := SPACE(0)
ecfpoucopapel := .F.
IF ast1 >= 128
   ast1   := ast1 - 128
   msgst1 := 'Fim de Papel'
ENDIF   
IF ast1 >= 64
   ecfpoucopapel := .T.
   ast1   := ast1 - 64
   msgst1 := 'Pouco Papel'
ENDIF   
IF ast1 >= 32
   ast1   := ast1 - 32
   msgst1 := 'Erro no rel¢gio'
ENDIF   
IF ast1 >= 16
   ast1   := ast1 - 16
   msgst1 := 'Impressora em erro'
ENDIF   
IF ast1 >= 8
   ast1   := ast1 - 8
   msgst1 := 'Comando nÆo iniciado com ESC (CHR927))' 
ENDIF   
IF ast1 >= 4
   ast1   := ast1 - 4
   msgst1 := 'Comando inixistente'
ENDIF   
IF ast1 >= 2
   ast1   := ast1 - 2
   msgst1 := 'Cupom aberto'
ENDIF   
IF ast1 >= 1
   ast1   := ast1 - 1
   msgst1 := 'N£mero de parƒmetros inv lidos'
ENDIF   
// Inicio o calculo de ST2
msgst2 := SPACE(0)
IF ast2 >= 128
   ast2   := ast2 - 128
   msgst2 := 'Tipo de parƒmetro de comando inv lido'
ENDIF   
IF ast2 >= 64
   ast2   := ast2 - 64
   msgst2 := 'Mem¢ria fiscal cheia'
ENDIF   
IF ast2 >= 32
   ast2   := ast2 - 32
   msgst2 := 'Erro na mem¢ria RAM'
ENDIF   
IF ast2 >= 16
   ast2   := ast2 - 16
   msgst2 := 'Al¡quota nÆo propgramada'
ENDIF   
IF ast2 >= 8
   ast2   := ast2 - 8
   msgst2 := 'Capacidade m xima de al¡quotas atingido' 
ENDIF
IF ast2 >= 4
   ast2   := ast2 - 4
   msgst2 := 'Cancelamento nÆo permitido'
ENDIF   
IF ast2 >= 2
   ast2   := ast2 - 2
   msgst2 := 'CNPJ/IE do propriet rio nÆo programado'
ENDIF   
IF ast2 >= 1
   ast2   := ast2 - 1
   msgst2 := 'Comando nÆo executado'
ENDIF   
FERASE((arqstatus))
ast12 := .T.
IF .NOT. EMPTY(msgst1)
   IF ecfpoucopapel
      ast12 := .T.
   ELSE
      ast12 := .F.
   ENDIF   
ENDIF   
IF .NOT. EMPTY(msgst2)
   ast12 := .F.
ENDIF   
RETURN({ast12,msgst1,msgst2})

Function Chk_Retorno
Local liga,ack,st1,st2,msg1,msg2

ack:= i2bin(0)
st1:= i2bin(0)
st2:= i2bin(0)

//liga:= dllcall("BEMAFI32.DLL",32,"Bematech_FI_RetornoImpressora",ack,st1,st2)

msg1:= bin2i(St1)
msg2:= bin2i(St2)
MsgSTOP(" ST1 "+msg1+" ST2 "+msg2,"CODIGO")
// Fim da funcao de testar o arquivo STATUS.TXT -----------------------------.
// --------------------------------------------------------------------------.
// Chamadas para DLL --------------------------------------------------------.
// Manipula‡Æo do cupom fiscal
DECLARE DLL_TYPE_INT Bematech_FI_AbreCupom(DLL_TYPE_LPCSTR bemadocumento) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_VendeItem(DLL_TYPE_LPCSTR bemacodigo,DLL_TYPE_LPCSTR bemadescricao,DLL_TYPE_LPCSTR bemaaliquota,DLL_TYPE_LPCSTR bematipoquan,DLL_TYPE_LPCSTR bemaquantidade,DLL_TYPE_INT bemacasas,DLL_TYPE_LPCSTR bemaunitario,DLL_TYPE_LPCSTR bematipodesc,DLL_TYPE_LPCSTR bemadesconto) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_CancelaItemGenerico(DLL_TYPE_LPCSTR bemaitemcancela) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_IniciaFechamentoCupom(DLL_TYPE_LPCSTR bemadescoacres,DLL_TYPE_LPCSTR bematipodescoacres,DLL_TYPE_LPCSTR bemavaldescoacres) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_SubTotal(DLL_TYPE_LPCSTR bemasubtotal) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_EfetuaFormaPagamento(DLL_TYPE_LPCSTR bemaformapaga,DLL_TYPE_LPCSTR bemaformavalor) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_TerminaFechamentoCupom(DLL_TYPE_LPCSTR bemamensagem) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_CancelaCupom() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaFormaPagamentoMFD(DLL_TYPE_LPCSTR bemaformapaga,DLL_TYPE_LPCSTR bemaformatef) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_AberturaDoDia(DLL_TYPE_LPCSTR bemasuprimento,DLL_TYPE_LPCSTR bemaformasupri) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_Suprimento(DLL_TYPE_LPCSTR bemasuprimento,DLL_TYPE_LPCSTR bemaformasupri) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_Sangria(DLL_TYPE_LPCSTR bemasangria) IN BEMAFI32.DLL
// Verifica o numero de s‚rie, data, hora e numero do ultimo cupom
//DECLARE DLL_TYPE_INT Bematech_FI_NumeroSerie(DLL_TYPE_LPCSTR NumeroSerie) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroSerie() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_DataHoraImpressora() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroCaixa(DLL_TYPE_LPCSTR bemafinumerocaixa) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_NumeroCupom(DLL_TYPE_LPCSTR bemafinumerocf) IN BEMAFI32.DLL
// Relat¢rios
DECLARE DLL_TYPE_INT Bematech_FI_ReducaoZ(DLL_TYPE_LPCSTR bemadata,DLL_TYPE_LPCSTR bemahora) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraX() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraMemoriaFiscalData(DLL_TYPE_LPCSTR bemadataini,DLL_TYPE_LPCSTR bemadatafim,DLL_TYPE_LPCSTR bemasaida) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeituraMemoriaFiscalReducao(DLL_TYPE_LPCSTR bemareducaoini,DLL_TYPE_LPCSTR bemareducaofim,DLL_TYPE_LPCSTR bemasaida) IN BEMAFI32.DLL
// Programa‡Æo de estado
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaAliquota(DLL_TYPE_LPCSTR bemaaliquota,DLL_TYPE_LPCSTR bemaimposto) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_ProgramaHorarioVerao() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_RetornoImpressora(DLL_TYPE_INT Ack,DLL_TYPE_INT St1,DLL_TYPE_INT St2) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_MonitoramentoPapel() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_VerificaEstadoImpressoraStr() IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_LeArquivoRetorno(DLL_TYPE_LPCSTR variaretorno) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_AbreComprovanteNaoFiscalVinculado(DLL_TYPE_LPCSTR fPagamento,DLL_TYPE_LPCSTR fValor,DLL_TYPE_LPCSTR fNumero) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_UsaComprovanteNaoFiscalVinculado(DLL_TYPE_LPCSTR fLinha) IN BEMAFI32.DLL
DECLARE DLL_TYPE_INT Bematech_FI_FechaComprovanteNaoFiscalVinculado() IN BEMAFI32.DLL
// --------------------------------------------------------------------------.


FUNCTION ERRO(PARI)
MsgSTOP(pari,"Cupom")
return nil

Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

erro com dll bemafi32.ini

Mensagem por Imatech »

Usando a Bema*.c vai ficar assim:

Declarações da DLL ao final do arquivo devem ser apagadas do fonte...
DECLARE DLL_TYPE_INT Bematech_FI_...

Código: Selecionar todos

#INCLUDE "INKEY.CH"
#INCLUDE "MINIGUI.CH"
 
*-----------------------------------------------------------------------------*
* Funcao...: Ler o numero de serie do ECF BEMATECH 
*-----------------------------------------------------------------------------*
FUNCTION bemafiserie( bemafiserie )
  LOCAL xAux := ''
  LOCAL NumeroSerie := SPACE(15)

  xAux := Bematech_FI_NumeroSerie( @NumeroSerie )
  xAux := pegaestatus( xAux )

  IF ecfpoucopapel()
    ecfpoucopapel := .F.
    bemafitestapapel()
  ENDIF

RETURN(NumeroSerie)
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
pena
Usuário Nível 3
Usuário Nível 3
Mensagens: 331
Registrado em: 06 Jul 2004 18:08
Localização: CACHOEIRA DO SUL-RS

erro com dll bemafi32.ini

Mensagem por pena »

Olha pessoal, agradeço a todos que me ajudaram, e por tomar um tempo enorme sendo que o erro foi meu e infantil demais, onde não me prendi a pequenos detalhes :% , mas então, funcionou o bicho de sete cabeças :)Pos , eu estava chamando a rotina de abrir o cupom assim
Bematech_FI_AbreCupom(bemadocumento), só que o bemadocumento estava assim = NIL, e não sei pq resolvi fazer assim

Bematech_FI_AbreCupom(" ") e abriu o cupom, que barbaridade :'( , agradeço ajuda, sem vcs não teria conseguido :{ :-Y , um abração um otimo fim de noite e uma boa semana
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

erro com dll bemafi32.ini

Mensagem por Pablo César »

Puxa ! Você deve estar brincando ? kkkk Você é nos fez consumir 3 páginas neste tópico por questão de parâmetro ? Ahhh vou ter mais cuidado com você da próxima.... kkkk

Mas que bom que você achou o erro e que acabou aprendendo algo a mais...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder