Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Senhores não consigo obter o retorno estendido na variavel ST3 utilizando a BEMAFI32.DLL

Consigo trabalhar normalmente, vender, leitura X etc etc etc,

Mas para atender o Teste 48 do PAF-ECF preciso analisar o retorno estendido da ECF.

Abaixo disponibilizo código para apreciação dos senhores, e se alguém souber desde já agradeço.

Código: Selecionar todos


********************************************************************************
Function main()
//-- Função para teste de análise de retorno estendido utilizando BEMAFI32.DLL
//-- Compilei utilizando o xHarbour sem fazer chamada a nenhuma lib
********************************************************************************

 /*
  * Roteiro PAF:
       http://www.unifil.br/portal/arquivos/hotsites/paginas/2010/10/10_89_hotsitespg.pdf

  * Explicação sobre an lise Retornos:
       http://www.forumweb.com.br/foruns/topic/28157-mais-de-200-tipos-de-retorno-de-status/

  * Página de Referencia sobre M‚todos da Bemafi32.DLL:
       http://www.bematech.com.br/suporte/bemafi32/index.html?h_d_ret_est_logger.htm

  * Mais Referˆncias sobre os M‚todos Habilita Retorno Estendido e Retorno Imp MFD:
       http://partners.bematech.com.br/suporte/bemafi32/h_d_ret_est_logger.htm
       http://partners.bematech.com.br/suporte/bemafi32/ret_imp_logger.htm
 */

    set date brit
    set century on
    SET CONFIRM ON
    SET SCOREBOARD OFF
    SET DELETED ON
    CLEAR

    //-- Carrega Dll
    NDLL := LoadLibrary("Bemafi32.dll")

    //-- Testa conexÆo da ECF com a Porta Serial configurada no BEMAFI32.INI
    RET := DLLCALL(NDLL,32,"Bematech_FI_AbrePortaSerial")

    //-- Analisa Retornos do comando anterior
    IF RET=(-4)
       ALERT("Erro no arquivo Bemafi32.ini")
    ENDIF
    IF RET=(-5)
       ALERT("Erro ao abrir porta de comunicacao")
    ENDIF

    //-- Inicializa vari veis
    ack := ''
    st1 := ''
    st2 := ''
    st3 := ''

    //-- Habilita o retorno estendido ST3 conforme referencias abaixo:
    iRetorno := DLLCALL(NDLL,32,"Bematech_FI_HabilitaDesabilitaRetornoEstendidoMFD","1")
    @ 10,01 say 'Retorno Habilita Desabilita Retorno Estendido MFD:' + STR(iRetorno)

    //-- Manda uma leitura X pra testar
    iRetorno := DLLCALL(NDLL,32,"Bematech_FI_LeituraX")
    @ 11,01 say 'Retorno Leitura X................................:' + STR(iRetorno)

    //-- Captura o Retorno Estendido
    iRetorno := DLLCALL(NDLL, 32, "Bematech_FI_RetornoImpressoraMFD", ACK, ST1, ST2, ST3)
    @ 12,01 say 'Retorno M‚todo de An lise do Retorno Imp. MFD....:' + STR(iRetorno)

    //-- Mostra os resultados
    @ 14,01 say 'Demais conte£dos das vari veis ACK, ST1, ST2, ST3'
    @ 15,01 say "ACK..............................................:" + STR( ASC( alltrim(ack) ) )
    @ 16,01 say "St1..............................................:" + STR( ASC( alltrim(st1) ) )
    @ 17,01 say "St2..............................................:" + STR( ASC( alltrim(st2) ) )
    @ 18,01 say "St3..............................................:" + STR( ASC( alltrim(st3) ) )
    inkey(0)

    //-- Le conteudo arquivos
    LERET0 := MEMOREAD("C:\STATUS.TXT")
    LERET1 := MEMOREAD("C:\RETORNO.TXT")

//-- Libera Dll
FreeLibrary(NDLL)
RETURN .T. 
Aproveito para dizer q tb estou tentando em paralelo utilizar via funções C mas esta dando um erro ao compilar, segue código de acesso as funções da Bematech em C e tb o respectivo erro ao compilar.
dllbemacc.c
(87.9 KiB) Baixado 135 vezes
Erro ao compilar xHarbour acrescentando o arquivo dllBemacc.C

Código: Selecionar todos

Type: C >>>bcc32.exe -o"OBJ\dllbemacc.obj" -c  -DHB_EXT_INKEY -DXHARBOUR  -I"d:\projetos\sistemas\_include" -I"c:\xharbour\include" -I"c:\xharbour\include\sqlrdd" -I"c:\xharbour\contrib\hwgui\include" -I"c:\xHarbour\include" "dllbemacc.c"<<<

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
dllbemacc.c:
Warning W8075 dllbemacc.c 2705: Suspicious pointer conversion in function HB_FUN_BEMATECH_FI_VERIFICAREDUCAOZAUTOMATICA

Type: C >>>ilink32.exe -Gn -s  -ap -L"c:\xHarbour\lib" -L"c:\bcc55\lib" -L"c:\bcc55\lib\psdk" c0x32.obj "OBJ\TesteRodrigo.obj" "OBJ\dllbemacc.obj" , "TesteRodrigo.exe", , "vm.lib" "rtl.lib" "macro.lib" "pp.lib" "common.lib" "lang.lib" "gtwin.lib" "rdd.lib" "dbfntx.lib" "dbfnsx.lib" "dbfcdx.lib" "dbffpt.lib" "debug.lib" "pcrepos.lib" "hsx.lib" "hbsix.lib" "ct.lib" "zlib.lib" "codepage.lib" cw32.lib import32.lib odbc32.lib , , <<<

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external 'Bematech_FI_NumeroSerie' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_DataHoraImpressora' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_VerificaFormasPagamento' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_VerificaRecebimentoNaoFiscal' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_RetornoImpressora' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_RetornoImpressoraMFD' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_VerificaEstadoImpressora' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_AlteraSimboloMoeda' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ
Error: Unresolved external 'Bematech_FI_DadosSintegra' referenced from D:\PROJETOS\SISTEMAS\_TESTE_ESTUDOS\TESTERODRIGO\OBJ\DLLBEMACC.OBJ

Type: C >>>Couldn't build: TesteRodrigo.exe<<<
Type: C >>>TMAKEPROJECT<<<
Type: C >>>TMAKEPROJECT:REFRESH<<<
Type: N >>>      1423<<<
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por lucimauro »

Fladimir vamos la.
Vou mostar como uso na bematech.

1. No inicio ou cadastrado de sua ecf bematech voce deve enviar esse comando para o retorno extendido ser
habilitado
dllcall( nLib32, 32, "Bematech_FI_HabilitaDesabilitaRetornoEstendidoMFD", "1")

2. Exemplo de comando enviados a ecf

Código: Selecionar todos

retorno_ecf:=DllCall( nLib32, 32, "Bematech_FI_LeituraX")
if retorno_ecf != 1
   mens_agem(erro_bematech(retorno_ecf))
endif

function Erro_bematech(nr_erro)                                              
local msn_erro:=space(40)                                                    
if nr_erro==0                                                                
   msn_erro:="Error de comunicacao"                                          
elseif nr_erro==-1                                                           
   msn_erro:="Arquivo de execucao"                                           
elseif nr_erro==-2                                                           
   msn_erro:="Parametro invalido"                                            
elseif nr_erro==-4                                                           
   msn_erro:="Arquivo de configuracao BEMAFI32.ini nao encontrado"           
elseif nr_erro==-5                                                           
   msn_erro:="Erro ao abrir porta de comunicacao"                            
elseif nr_erro==-6                                                           
   msn_erro:="Impressora desligada ou cabo de comunicacao desconectado"      
elseif nr_erro==-27                                                          
   ack:=0                                                                    
   st1:=0                                                                    
   st2:=0                                                                    
   st3:=0                                                                    
   Ret:=DllCall( nLib32, 32, "Bematech_FI_RetornoImpressoraMFD",@ack,@st1,@st3)
   If st3 != 0                                                               
      If ecf_mfd==[S]     && Somente nas ECF mfd                                                   
         msn_erro:=ErroExtBematech(st3)      
       else
          msn_erro:="Erro desconhecido retornado pela ECF"
       endif
    else
       msn_erro:="ECF nao esta respondendo"
    endif
 else
    msn_erro:="Erro!! Verifique se a ECF esta ligada ou cabo desconectado"
 endif
 return(msn_erro)
se voce reparar o erro -27 é um erro extendido que voce deve chamar a funcao abaixo para tratar do mesmo

Código: Selecionar todos

Static Function ErroExtBematech(xSt3)                                        
 Local cRet := '', iRet                                                       
 If xSt3==1                                                                   
    cRet:='COMANDO INVALIDO'                                                  
 ElseIf xSt3==2                                                               
    cRet:='ERRO DESCONHECIDO'                                                 
 ElseIf xSt3==3                                                               
    cRet:='NUMERO DE PARAMETRO INVALIDO'                                      
endif
return(cret)
Existe mais retorno mais eu nao sei como colocar isso dentro de um codigo entao se quiser depois passo todos os erros para voce.

Nao sei se fui claro.
Editado pela última vez por Pablo César em 30 Mai 2012 23:49, em um total de 3 vezes.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Obrigado pelo retorno, eu entendi sim, mas veja q estranho (não sei se é pq estou usando emulador bematech 2100)

mas eu inseri seu código após eu carregar a lib na variável nDll ficando assim:

Código: Selecionar todos

	//-- Carrega Dll
	NDLL := LoadLibrary("Bemafi32.dll")

	//-- Testa conexÆo da ECF com a Porta Serial configurada no BEMAFI32.INI
	RET := DLLCALL(NDLL,32,"Bematech_FI_AbrePortaSerial")  
	
	//-- Analisa Retornos do comando anterior
	IF RET=(-4)
	   ALERT("Erro no arquivo Bemafi32.ini")
	ENDIF
	IF RET=(-5)
	   ALERT("Erro ao abrir porta de comunicacao")
	ENDIF

////////////////////////////////////////////////////////////////////////////////
&& Trecho do colega
	dllcall( nDll, 32, "Bematech_FI_HabilitaDesabilitaRetornoEstendidoMFD", "1")
	retorno_ecf:=DllCall( nDll, 32, "Bematech_FI_LeituraX")
	if retorno_ecf != 1
		Alert(erro_bematech(retorno_ecf))
	endif
Altd()
&& ao parar neste ponto e analisar o conteudo de retorno da variavel retorno_ecf sempre esta =  1  mesmo mudando os tipos de opções dos sensores...
E nos testes mesmo habilitando pouco papel e outros sensores para testar sempre retorna 1 após mandar a leitura X, mas isto não esta correto, acho q deve ser algum detalhe pertinente ao uso do Emulador, talvez minha configuração do Bemafi32.ini.

O q o colega pensa a respeito?

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por lucimauro »

Esse retorno extendido so funciona nos modelos MFD, voce ja configurou o bemafi32.ini para ECF MFD?
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Cara ta muito estranho... esta habilitado MFD e só retorna 1

Teria como vc mandar seu INI, sua Dll e se possível um PRG q vc fizesse ai só pra testarmos isso ?

To achando q pode ser algo com meu xHarbour.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por lucimauro »

Fladirmir qual o valor da variavel statusfuncao em seu bemafi32.ini?
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Colega estava ZERO, aí eu coloquei = a UM e ai retorno -27 e entrou na função q vc exemplificou.... porém, acompanhando via debug linha a linha qdo ele vai executar esta linha:

Código: Selecionar todos

 Ret:=DllCall( nDll, 32, "Bematech_FI_RetornoImpressoraMFD",@ack,@st1,@st3) 
Da o seguinte
Erro.pdf
Imagem do Erro ao executar a Linha
(16.58 KiB) Baixado 147 vezes
q esta em anexo a IMAGEM, e transcrevo a mensagem abaixo:

DllCall Parameter Error!
UNKNOWN Parameter Type!

E depois aparece o Alert ECF não esta respondendo.

Será q pode ser minha Dll ou meu xHarbour?

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por lucimauro »

me mande seu e-mail que mando a funcao completa que eu uso e funciona com todos os retornos!!!
Nota de Moderação:
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: (de acordo a sua ultima citação) 
 
Enviar por email, resolver através de meios privados são práticas não aceitas aqui no fórum. Desestimulamos este tipo de procedimento, já que o objetivo do fórum é para servir como fonte centralizadora de informações, onde os usuários possam compartilhar de forma pública e não exclusiva. Favor ler a Regra Geral do Fórum (itens 10,11,12 e 13).
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por lucimauro »

Outra coisa
Ret:=DllCall( nDll, 32, "Bematech_FI_RetornoImpressoraMFD",@ack,@st1,@st3)

voce mudou a variavel NDLLl para sua variavel que voce usa, ja que esse nome foi de meu exemplo.?
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Sim mudei o nome da variável.

fladimir_arroyo@yahoo.com.br

[]'s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por sambomb »

DllCall( nDll, 32, "Bematech_FI_RetornoImpressoraMFD",@ack,@st1,@st2,@st3)
Imagem

Rca Sistemas - Itaocara - RJ
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Colegas após muito pelejar e com a ajuda de alguns colegas e agradecimentos em especial ao Lucimauro, cheguei a conclusão q deve ser o compilador... explico segue código q compilado com Harbour funciona certinho e retorna por exemplo a Impressora Sem Papel (via emulador configurado sensor para sem papel - Erro estendido)

Código: Selecionar todos

#ifndef XHARBOUR
	#include "hbdyn.ch"
#endif
********************************************************************************
Function main()
//-- Fun‡Æo para teste de an lise de retorno estendido utilizando BEMAFI32.DLL
//-- utilizado xHarbour sem chamar nenhuma lib
********************************************************************************

CLEAR
altd()
	//-- Carrega Dll
	#ifndef XHARBOUR
		NDLL := HB_LibLoad("Bemafi32.dll")   && Carrega em harbour
	#else
		ndll := LoadLibrary("Bemafi32.dll")    && Carrega em xHarbour
	#endif
	
	//-- Testa conexÆo da ECF com a Porta Serial configurada no BEMAFI32.INI
	#ifndef XHARBOUR
		RET := HB_DynCall( { "Bematech_FI_AbrePortaSerial", NDLL ,HB_DYN_CALLCONV_STDCALL})  
	#else
		RET := DllCall( nDll, 32, "Bematech_FI_AbrePortaSerial")  
	#endif
	
	//-- Analisa Retornos do comando anterior
	IF RET=(-4)
	   ALERT("Erro no arquivo Bemafi32.ini")
	ENDIF
	IF RET=(-5)
	   ALERT("Erro ao abrir porta de comunicacao")
	ENDIF
	


	//-- Habilita o retorno estendido ST3 conforme referencias abaixo:
	#ifndef XHARBOUR
		iRetorno := HB_DynCall( {"Bematech_FI_HabilitaDesabilitaRetornoEstendidoMFD", nDll, HB_DYN_CALLCONV_STDCALL}, '1')
	#else
		iRetorno := DllCall( nDll, 32, "Bematech_FI_HabilitaDesabilitaRetornoEstendidoMFD", '1')
	#endif
	
	@ 10,01 say 'Retorno Habilita Desabilita Retorno Estendido MFD:' + STR(iRetorno)

	//-- Manda uma leitura X pra testar
	#ifndef XHARBOUR
		retorno_ecf:=HB_DynCall( {"Bematech_FI_LeituraX", nDll, HB_DYN_CALLCONV_STDCALL})
	#else
		retorno_ecf:=DllCall( nDll, 32, "Bematech_FI_LeituraX")
	#endif
	
	@ 11,01 say 'Retorno Leitura X................................:' + STR(retorno_ecf)
	if retorno_ecf != 1
           Alert(erro_bematech(retorno_ecf))
	endif

	//-- Libera Dll
	#ifndef XHARBOUR
		HB_LibFree(nDLL)	
	#else
		FreeLibrary(nDLL)	
	#endif
Return nil



//-- Lucimauro
function Erro_bematech(nr_erro)
local msn_erro:=space(40)
LOCAL ECF_MFD := "S"  && Afirmei q ‚ uma MFD
if nr_erro==0
   msn_erro:="Error de comunicacao"
elseif nr_erro==-1
   msn_erro:="Arquivo de execucao"
elseif nr_erro==-2
   msn_erro:="Parametro invalido"
elseif nr_erro==-4
   msn_erro:="Arquivo de configuracao BEMAFI32.ini nao encontrado"
elseif nr_erro==-5
   msn_erro:="Erro ao abrir porta de comunicacao"
elseif nr_erro==-6
   msn_erro:="Impressora desligada ou cabo de comunicacao desconectado"
elseif nr_erro==-27
   ack:=0
   st1:=0
   st2:=0
   st3:=0
	#ifndef XHARBOUR
   	Ret:=HB_DynCall( {"Bematech_FI_RetornoImpressoraMFD", nDll, HB_DYN_CALLCONV_STDCALL}, @ack,@st1,@st2,@st3)
   #else
		Ret:=DllCall( nDll,32, "Bematech_FI_RetornoImpressoraMFD", @ack,@st1,@st2,@st3)
	#endif
   If st3 != 0
      If ecf_mfd==[S]
         msn_erro:=ErroExtBematech(st3)
      else
         msn_erro:="Erro desconhecido retornado pela ECF"
      endif
   else
      msn_erro:="ECF nao esta respondendo"
   endif
else
   msn_erro:="Erro!! Verifique se a ECF esta ligada ou cabo desconectado"
endif
return(msn_erro)
 
Static Function ErroExtBematech(xSt3)
   Local cRet := '', iRet
   If xSt3==1
      cRet:='COMANDO INVALIDO'
   ElseIf xSt3==2
      cRet:='ERRO DESCONHECIDO'
   ElseIf xSt3==3
      cRet:='NUMERO DE PARAMETRO INVALIDO'
   ElseIf xSt3==4
      cRet:='TIPO DE PARAMETRO INVALIDO'
   ElseIf xSt3==5
      cRet:='TODAS ALIQUOTAS JA PROGRAMADAS'
   ElseIf xSt3==6
      cRet:='TOTALIZADOR NAO FISCAL JA PROGRAMADO'
   ElseIf xSt3==7
      cRet:='CUPOM FISCAL ABERTO'
   ElseIf xSt3==8
      cRet:='CUPOM FISCAL FECHADO'
   ElseIf xSt3==9
      cRet:='ECF OCUPADO'
   ElseIf xSt3==10
      cRet:='IMPRESSORA EM ERRO'
   ElseIf xSt3==11
      cRet:='IMPRESSORA SEM PAPEL'
   ElseIf xSt3==12
      cRet:='IMPRESSORA COM CABECA LEVANTADA'
   ElseIf xSt3==13
      cRet:='IMPRESSORA OFF LINE'
   ElseIf xSt3==14
      cRet:='ALIQUOTA NAO PROGRAMADA'
   ElseIf xSt3==15
      cRet:='TERMINADOR DE STRING FALTANDO'
   ElseIf xSt3==16
      cRet:='ACRESCIMO OU DESCONTO MAIOR QUE O TOTAL DO CUPOM FISCAL'
   ElseIf xSt3==17
      cRet:='CUPOM FISCAL SEM ITEM VENDIDO'
   ElseIf xSt3==18
      cRet:='COMANDO NAO EFETIVADO'
   ElseIf xSt3==19
      cRet:='SEM ESPACO PARA NOVAS FORMAS DE PAGAMENTO'
   ElseIf xSt3==20
      cRet:='FORMA DE PAGAMENTO NAO PROGRAMADA'
   ElseIf xSt3==21
      cRet:='INDICE MAIOR QUE NUMERO DE FORMA DE PAGAMENTO'
   ElseIf xSt3==22
      cRet:='FORMAS DE PAGAMENTO ENCERRADAS'
   ElseIf xSt3==23
      cRet:='CUPOM NAO TOTALIZADO'
   ElseIf xSt3==24
      cRet:='COMANDO MAIOR QUE 7Fh (127d)'
   ElseIf xSt3==25
      cRet:='CUPOM FISCAL ABERTO E SEM ITEM'
   ElseIf xSt3==26
      cRet:='CANCELAMENTO NAO IMEDIATAMENTE APOS'
   ElseIf xSt3==27
      cRet:='CANCELAMENTO JA EFETUADO'
   ElseIf xSt3==28
      cRet:='COMPROVANTE DE CREDITO OU DEBITO NAO PERMITIDO OU JA EMITIDO'
   ElseIf xSt3==29
      cRet:='MEIO DE PAGAMENTO NAO PERMITE TEF'
   ElseIf xSt3==30
      cRet:='SEM COMPROVANTE NAO FISCAL ABERTO'
   ElseIf xSt3==31
      cRet:='COMPROVANTE DE CREDITO OU DEBITO JA ABERTO'
   ElseIf xSt3==32
      cRet:='REIMPRESSAO NAO PERMITIDA'
   ElseIf xSt3==33
      cRet:='COMPROVANTE NAO FISCAL JA ABERTO'
   ElseIf xSt3==34
      cRet:='TOTALIZADOR NAO FISCAL NAO PROGRAMADO'
   ElseIf xSt3==35
      cRet:='CUPOM NAO FISCAL SEM ITEM VENDIDO'
   ElseIf xSt3==36
      cRet:='ACRESCIMO E DESCONTO MAIOR QUE TOTAL CNF'
   ElseIf xSt3==37
      cRet:='MEIO DE PAGAMENTO NAO INDICADO'
   ElseIf xSt3==38
      cRet:='MEIO DE PAGAMENTO DIFERENTE DO TOTAL DO RECEBIMENTO'
   ElseIf xSt3==39
      cRet:='NAO PERMITIDO MAIS DE UMA SANGRIA OU SUPRIMENTO'
   ElseIf xSt3==40
      cRet:='RELATORIO GERENCIAL JA PROGRAMADO'
   ElseIf xSt3==41
      cRet:='RELATORIO GERENCIAL NAO PROGRAMADO'
   ElseIf xSt3==42
      cRet:='RELATORIO GERENCIAL NAO PERMITIDO'
   ElseIf xSt3==43
      cRet:='MFD NOO INICIALIZADA'
   ElseIf xSt3==44
      cRet:='MFD AUSENTE'
   ElseIf xSt3==45
      cRet:='MFD SEM NUMERO DE SERIE'
   ElseIf xSt3==46
      cRet:='MFD JA INICIALIZADA'
   ElseIf xSt3==47
      cRet:='MFD LOTADA'
   ElseIf xSt3==48
      cRet:='CUPOM NAO FISCAL ABERTO'
   ElseIf xSt3==49
      cRet:='MEMÓRIA FISCAL DESCONECTADA'
   ElseIf xSt3==50
      cRet:='MEMÓRIA FISCAL SEM NUMERO DE SERIE DA MFD'
   ElseIf xSt3==51
      cRet:='MEMORIA FISCAL LOTADA'
   ElseIf xSt3==52
      cRet:='DATA INICIAL INVALIDA'
   ElseIf xSt3==53
      cRet:='DATA FINAL INVALIDA'
   ElseIf xSt3==54
      cRet:='CONTADOR DE REDUCAO Z INICIAL INVALIDO'
   ElseIf xSt3==55
      cRet:='CONTADOR DE REDUCAO Z FINAL INVALIDO'
   ElseIf xSt3==56
      cRet:='ERRO DE ALOCACAO'
   ElseIf xSt3==57
      cRet:='DADOS DO RTC INCORRETOS'
   ElseIf xSt3==58
      cRet:='DATA ANTERIOR AO ULTIMO DOCUMENTO EMITIDO'
   ElseIf xSt3==59
      cRet:='FORA DE INTERVENCAO TECNICA'
   ElseIf xSt3==60
      cRet:='EM INTERVENCAO TECNICA'
   ElseIf xSt3==61
      cRet:='ERRO NA MEMERIA DE TRABALHO'
   ElseIf xSt3==62
      cRet:='JA HOUVE MOVIMENTO NO DIA'
   ElseIf xSt3==63
      cRet:='BLOQUEIO POR REDUCAO Z'
   ElseIf xSt3==64
      cRet:='FORMA DE PAGAMENTO ABERTA'
   ElseIf xSt3==65
      cRet:='AGUARDANDO PRIMEIRO PROPRIETARIO'
   ElseIf xSt3==66
      cRet:='AGUARDANDO REDUCAO Z DO DIA ANTERIOR'
   ElseIf xSt3==67
      cRet:='ECF OU LOJA IGUAL A ZERO'
   ElseIf xSt3==68
      cRet:='CUPOM ADICIONAL NAO PERMITIDO'
   ElseIf xSt3==69
      cRet:='DESCONTO MAIOR QUE TOTAL VENDIDO EM ICMS'
   ElseIf xSt3==70
      cRet:='RECEBIMENTO NAO FISCAL NULO NAO PERMITIDO'
   ElseIf xSt3==71
      cRet:='ACRESCIMO OU DESCONTO MAIOR QUE TOTAL NAO FISCAL'
   ElseIf xSt3==72
      cRet:='MEMORIA FISCAL LOTADA PARA NOVO CARTUCHO'
   ElseIf xSt3==73
      cRet:='ERRO DE GRAVACAO NA MEMORIA FISCAL'
   ElseIf xSt3==74
      cRet:='ERRO DE GRAVACAO NA MFD'
   ElseIf xSt3==75
      cRet:='DADOS DO RTC ANTERIORES AO ULTIMO DOC ARMAZENADO'
   ElseIf xSt3==76
      cRet:='MEMORIA FISCAL SEM ESPACO PARA GRAVAR LEITURAS DA MFD'
   ElseIf xSt3==77
      cRet:='MEMORIA FISCAL SEM ESPACO PARA GRAVAR VERSAO DO SB'
   ElseIf xSt3==78
      cRet:='DESCRICAO IGUAL A DEFAULT NAO PERMITIDO'
   ElseIf xSt3==79
      cRet:='EXTRAPOLADO NUMERO DE REPETICOES PERMITIDAS'
   ElseIf xSt3==80
      cRet:='SEGUNDA VIA DO COMPROVANTE DE CREDITO OU DEBITO NAO PERMITIDO'
   ElseIf xSt3==81
      cRet:='PARCELAMENTO FORA DA SEQUENCIA'
   ElseIf xSt3==82
      cRet:='COMPROVANTE DE CREDITO OU DEBITO ABERTO'
   ElseIf xSt3==83
      cRet:='TEXTO COM SEQUENCIA DE ESC INVALIDA'
   ElseIf xSt3==84
      cRet:='TEXTO COM SEQUENCIA DE ESC INCOMPLETA'
   ElseIf xSt3==85
      cRet:='VENDA COM VALOR NULO'
   ElseIf xSt3==86
      cRet:='ESTORNO DE VALOR NULO'
   ElseIf xSt3==87
      cRet:='FORMA DE PAGAMENTO DIFERENTE DO TOTAL DA SANGRIA'
   ElseIf xSt3==88
      cRet:='REDUCAO NAO PERMITIDA EM INTERVENCAO TECNICA'
   ElseIf xSt3==89
      cRet:='AGUARDANDO RZ PARA ENTRADA EM INTERVENCAO TECNICA'
   ElseIf xSt3==90
      cRet:='FORMA DE PAGAMENTO COM VALOR NULO NAO PERMITIDO'
   ElseIf xSt3==91
      cRet:='ACRESCIMO E DESCONTO MAIOR QUE VALOR DO ITEM'
   ElseIf xSt3==92
      cRet:='AUTENTICACAO NAO PERMITIDA'
   ElseIf xSt3==93
      cRet:='TIMEOUT NA VALIDACAO'
   ElseIf xSt3==94
      cRet:='COMANDO NAO EXECUTADO EM IMPRESSORA BILHETE DE PASSAGEM'
   ElseIf xSt3==95
      cRet:='COMANDO NAO EXECUTADO EM IMPRESSORA DE CUPOM FISCAL'
   ElseIf xSt3==96
      cRet:='CUPOM NAO FISCAL FECHADO'
   ElseIf xSt3==97
      cRet:='PARAMETRO NAO ASCII EM CAMPO ASCII'
   ElseIf xSt3==98
      cRet:='PARAMETRO NAO ASCII NUMERICO EM CAMPO ASCII NUMERICO'
   ElseIf xSt3==99
      cRet:='TIPO DE TRANSPORTE INVALIDO'
   ElseIf xSt3==100
      cRet:='DATA E HORA INVALIDA'
   ElseIf xSt3==101
      cRet= 'SEM RELATORIO GERENCIAL OU COMPROVANTE DE CREDITO OU DEBITO ABERTO'
   ElseIf xSt3==102
      cRet:='NUMERO DO TOTALIZADOR NAO FISCAL INVALIDO'
   ElseIf xSt3==103
      cRet:='PARAMETRO DE ACRESCIMO OU DESCONTO INVALIDO'
   ElseIf xSt3==104
      cRet:='ACRESCIMO OU DESCONTO EM SANGRIA OU SUPRIMENTO NAO PERMITIDO'
   ElseIf xSt3==105
      cRet:='NUMERO DO RELATORIO GERENCIAL INVALIDO'
   ElseIf xSt3==106
      cRet:='FORMA DE PAGAMENTO ORIGEM NAO PROGRAMADA'
   ElseIf xSt3==107
      cRet:='FORMA DE PAGAMENTO DESTINO NAO PROGRAMADA'
   ElseIf xSt3==108
      cRet:='ESTORNO MAIOR QUE FORMA PAGAMENTO'
   ElseIf xSt3==109
      cRet:='CARACTER NUMERICO NA CODIFICACAO GT NAO PERMITIDO'
   ElseIf xSt3==110
      cRet:='ERRO NA INICIALIZACAO DA MF'
   ElseIf xSt3==111
      cRet:=' NOME DO TOTALIZADOR EM BRANCO NAO PERMITIDO'
   ElseIf xSt3==112
      cRet:='DATA E HORA ANTERIORES AO ULTIMO DOC ARMAZENADO'
   ElseIf xSt3==113
      cRet:='PARAMETRO DE ACRESCIMO OU DESCONTO INVALIDO'
   ElseIf xSt3==114
      cRet:='ITEM ANTERIOR AOS TREZENTOS ULTIMOS'
   ElseIf xSt3==115
      cRet:='ITEM NAO EXISTE OU JA CANCELADO'
   ElseIf xSt3==116
      cRet:='CODIGO COM ESPACOS NAO PERMITIDO'
   ElseIf xSt3==117
      cRet:='DESCRICAO SEM CARACTER ALFABETICO NAO PERMITIDO'
   ElseIf xSt3==118
      cRet:='ACRESCIMO MAIOR QUE VALOR DO ITEM'
   ElseIf xSt3==119
      cRet:='DESCONTO MAIOR QUE VALOR DO ITEM'
   ElseIf xSt3==120
      cRet:='DESCONTO EM ISS NAO PERMITIDO'
   ElseIf xSt3==121
      cRet:='ACRESCIMO EM ITEM JA EFETUADO'
   ElseIf xSt3==122
      cRet:='DESCONTO EM ITEM JA EFETUADO'
   ElseIf xSt3==123
      cRet:='ERRO NA MEMORIA FISCAL CHAMAR CREDENCIADO'
   ElseIf xSt3==124
      cRet:='AGUARDANDO GRAVACAO NA MEMORIA FISCAL'
   ElseIf xSt3==125
      cRet:='CARACTER REPETIDO NA CODIFICACAO DO GT'
   ElseIf xSt3==126
      cRet:='VERSAO JA GRAVADA NA MEMORIA FISCAL'
   ElseIf xSt3==127
      cRet:='ESTOURO DE CAPACIDADE NO CHEQUE'
   ElseIf xSt3==128
      cRet:='TIMEOUT NA LEITURA DO CHEQUE'
   ElseIf xSt3==129
      cRet:='MES INVALIDO'
   ElseIf xSt3==130
      cRet:='COORDENADA INVALIDA'
   ElseIf xSt3==131
      cRet:='SOBREPOSICAO DE TEXTO'
   ElseIf xSt3==132
      cRet:='SOBREPOSICAO DE TEXTO NO VALOR'
   ElseIf xSt3==133
      cRet:='SOBREPOSICAO DE TEXTO NO EXTENSO'
   ElseIf xSt3==134
      cRet:='SOBREPOSICAO DE TEXTO NO FAVORECIDO'
   ElseIf xSt3==135
      cRet:='SOBREPOSICAO DE TEXTO NA LOCALIDADE'
   ElseIf xSt3==136
      cRet:='SOBREPOSICAO DE TEXTO NO OPCIONAL'
   ElseIf xSt3==137
      cRet:='SOBREPOSICAO DE TEXTO NO DIA'
   ElseIf xSt3==138
      cRet:='SOBREPOSICAO DE TEXTO NO MES'
   ElseIf xSt3==139
      cRet:='SOBREPOSICAO DE TEXTO NO ANO'
   ElseIf xSt3==140
      cRet:='USANDO MFD DE OUTRO ECF'
   ElseIf xSt3==141
      cRet:='PRIMEIRO DADO DIFERENTE DE ESC OU 1C'
   ElseIf xSt3==142
      cRet:='NAO PERMITIDO ALTERAR SEM INTERVENCAO TECNICA'
   ElseIf xSt3==143
      cRet:='DADOS DA ULTIMA RZ CORROMPIDOS'
   ElseIf xSt3==144
      cRet:='COMANDO NAO PERMITIDO NO MODO INICIALIZACAO'
   ElseIf xSt3==145
      cRet:='AGUARDANDO ACERTO DE RELOGIO'
   ElseIf xSt3==146
      cRet:='MFD JA INICIALIZADA PARA OUTRA MF'
   ElseIf xSt3==147
      cRet:='AGUARDANDO ACERTO DO RELOGIO OU DESBLOQUEIO PELO TECLADO'
   ElseIf xSt3==148
      cRet:='VALOR FORMA DE PAGAMENTO MAIOR QUE MAXIMO PERMITIDO'
   ElseIf xSt3==149
      cRet:='RAZAO SOCIAL EM BRANCO'
   ElseIf xSt3==150
      cRet:='NOME DE FANTASIA EM BRANCO'
   ElseIf xSt3==151
      cRet:='ENDERECO EM BRANCO'
   ElseIf xSt3==152
      cRet:='ESTORNO DE CDC NAO PERMITIDO'
   ElseIf xSt3==153
      cRet:='DADOS DO PROPRIETARIO IGUAIS AO ATUAL'
   ElseIf xSt3==154
      cRet:='ESTORNO DE FORMA DE PAGAMENTO NAO PERMITIDO'
   ElseIf xSt3==155
      cRet:='DESCRICAO FORMA DE PAGAMENTO IGUAL JA PROGRAMADA'
   ElseIf xSt3==156
      cRet:='ACERTO DE HORARIO DE VERAO SO IMEDIATAMENTE APOS RZ'
   ElseIf xSt3==157
      cRet:='IT NAO PERMITIDA MF RESERVADA PARA RZ'
   ElseIf xSt3==158
      cRet:='SENHA CNPJ INVALIDA'
   ElseIf xSt3==159
      cRet:='TIMEOUT NA INICIALIZACAO DA NOVA MF'
   ElseIf xSt3==160
      cRet:='NAO ENCONTRADO DADOS NA MFD'
   ElseIf xSt3==161
      cRet:='SANGRIA OU SUPRIMENTO DEVEM SER UNICOS NO CNF'
   ElseIf xSt3==162
      cRet:='INDICE DA FORMA DE PAGAMENTO NULO NAO PERMITIDO'
   ElseIf xSt3==163
      cRet:='UF DESTINO INVALIDA'
   ElseIf xSt3==164
      cRet:='TIPO DE TRANSPORTE INCOMPATIVEL COM UF DESTINO'
   ElseIf xSt3==165
      cRet:='DESCRICAO DO PRIMEIRO ITEM DO BILHETE DE PASSAGEM DIFERENTE DE "TARIFA"'
   ElseIf xSt3==166
      cRet:='AGUARDANDO IMPRESSAO DE CHEQUE OU AUTENTICACAO'
   ElseIf xSt3==167
      cRet:='NAO PERMITIDO PROGRAMACAO CNPJ IE COM ESPACOS EM BRANCO'
   ElseIf xSt3==168
      cRet:='NAO PERMITIDO PROGRAMACAO UF COM ESPACOS EM BRANCO'
   ElseIf xSt3==169
      cRet:='NUMERO DE IMPRESSOES DA FITA DETALHE NESTA INTERVENCAO TECNICA ESGOTADO'
   ElseIf xSt3==170
      cRet:='CF JA SUBTOTALIZADO'
   ElseIf xSt3==171
      cRet:='CUPOM NAO SUBTOTALIZADO'
   ElseIf xSt3==172
      cRet:='ACRESCIMO EM SUBTOTAL JA EFETUADO'
   ElseIf xSt3==173
      cRet:='DESCONTO EM SUBTOTAL JA EFETUADO'
   ElseIf xSt3==174
      cRet:='ACRESCIMO NULO NAO PERMITIDO'
   ElseIf xSt3==175
      cRet:='DESCONTO NULO NAO PERMITIDO'
   ElseIf xSt3==176
      cRet:='CANCELAMENTO DE ACRESCIMO OU DESCONTO EM SUBTOTAL NAO PERMITIDO'
   ElseIf xSt3==177
      cRet:='DATA INVALIDA'
   ElseIf xSt3==178
      cRet:='VALOR DO CHEQUE NULO NAO PERMITIDO'
   ElseIf xSt3==179
      cRet:='VALOR DO CHEQUE INVALIDO'
   ElseIf xSt3==180
      cRet:='CHEQUE SEM LOCALIDADE NAO PERMITIDO'
   ElseIf xSt3==181
      cRet:='CANCELAMENTO ACRESCIMO EM ITEM NAO PERMITIDO'
   ElseIf xSt3==182
      cRet:='CANCELAMENTO DESCONTO EM ITEM NAO PERMITIDO'
   ElseIf xSt3==183
      cRet:='NUMERO MAXIMO DE ITENS ATINGIDO'
   ElseIf xSt3==184
      cRet:='NUMERO DE ITEM NULO NAO PERMITIDO'
   ElseIf xSt3==185
      cRet:='MAIS QUE DUAS ALIQUOTAS DIFERENTES NO BILHETE DE PASSAGEM NAO PERMITIDO'
   ElseIf xSt3==186
      cRet:='ACRESCIMO OU DESCONTO EM ITEM NAO PERMITIDO'
   ElseIf xSt3==187
      cRet:='CANCELAMENTO DE ACRESCIMO OU DESCONTO EM ITEM NAO PERMITIDO'
   ElseIf xSt3==188
      cRet:='CLICHE JA IMPRESSO'
   ElseIf xSt3==189
      cRet:='TEXTO OPCIONAL DO CHEQUE EXCEDEU O MAXIMO PERMITIDO'
   ElseIf xSt3==190
      cRet:='IMPRESSAO AUTOMATICA NO VERSO NAO PERMITIDO NESTE EQUIPAMENTO'
   ElseIf xSt3==191
      cRet:='TIMEOUT NA INSERCAO DO CHEQUE'
   ElseIf xSt3==192
      cRet:='OVERFLOW NA CAPACIDADE DE TEXTO DO COMPROVANTE DE CREDITO OU DEBITO'
   ElseIf xSt3==193
      cRet:='PROGRAMACAO DE ESPACOS ENTRE CUPONS MENOR QUE O MANIMO PERMITIDO'
   ElseIf xSt3==194
      cRet:='EQUIPAMENTO NAO POSSUI LEITOR DE CHEQUE'
   ElseIf xSt3==195
      cRet:='PROGRAMACAO DE ALIQUOTA COM VALOR NULO NAO PERMITIDO'
   ElseIf xSt3==196
      cRet:='PARAMETRO BAUD RATE INVALIDO'
   ElseIf xSt3==197
      cRet:='CONFIGURACAO PERMITIDA SOMENTE PELA PORTA DOS FISCO'
   ElseIf xSt3==198
      cRet:='VALOR TOTAL DO ITEM EXCEDE 11 DIGITOS'
   ElseIf xSt3==199
      cRet:='PROGRAMACAO DA MOEDA COM ESPACOS EM BRACO NAO PERMITIDO'
   ElseIf xSt3==200
      cRet:='CASAS DECIMAIS DEVEM SER PROGRAMADAS COM 2 OU 3'
   ElseIf xSt3==201
      cRet:='NAO PERMITE CADASTRAR USUARIOS DIFERENTES NA MESMA MFD'
   ElseIf xSt3==202
      cRet:='IDENTIFICACAO DO CONSUMIDOR NAO PERMITIDA PARA SANGRIA OU SUPRIMENTO'
   ElseIf xSt3==203
      cRet:='CASAS DECIMAIS EM QUANTIDADE MAIOR DO QUE A PERMITIDA'
   ElseIf xSt3==204
      cRet:='CASAS DECIMAIS DO UNITARIO MAIOR DO QUE O PERMITIDA'
   ElseIf xSt3==205
      cRet:='POSICAO RESERVADA PARA ICMS'
   ElseIf xSt3==206
      cRet:='POSICAO RESERVADA PARA ISS'
   ElseIf xSt3==207
      cRet:='TODAS AS ALIQUOTAS COM A MESMA VINCULACAO NAO PERMITIDO'
   ElseIf xSt3==208
      cRet:='DATA DE EMBARQUE ANTERIOR A DATA DE EMISSAO'
   ElseIf xSt3==209
      cRet:='ALIQUOTA DE ISS NAO PERMITIDA SEM INSCRICAO MUNICIPAL'
   ElseIf xSt3==210
      cRet:='RETORNO PACOTE CLICHE FORA DA SEQUENCIA'
   ElseIf xSt3==211
      cRet:='ESPACO PARA ARMAZENAMENTO DO CLICHE ESGOTADO'
   ElseIf xSt3==212
      cRet:='CLICHE GRAFICO NAO DISPONIVEL PARA CONFIRMACAO'
   ElseIf xSt3==213
      cRet:='CRC DO CLICHE GRAFICO DIFERENTE DO INFORMADO'
   ElseIf xSt3==214
      cRet:='INTERVALO INVALIDO'
   ElseIf xSt3==215
      cRet:='USUARIO JA PROGRAMADO'
   ElseIf xSt3==217
      cRet:='DETECTADA ABERTURA DO EQUIPAMENTO'
   ElseIf xSt3==218
      cRet:='CANCELAMENTO DE ACRESCIMO/DESCONTO NAO PERMITIDO '
   ElseIf xSt3 > 218
      cRet:=StrZero(xSt3,3) + ' ERRO NAO CATALOGADO'
   Endif
   Return(cRet)

Agora em xharbour não funciona qdo chega na chamada da função do erro extendido da o erro q havia comentado acima do UNKNOWN PARAMETER TYPE.

Estou pensando em fazer uma Dll ou Exe em Harbour e qdo precisar testar o retorno extendido usar tipo ESSA PONTE HARBOUR para minha app xHarbour funcionar, como uso SQLRDD não poderei ir de Harbour como já o faço em DBF.

Se alguém tiver outra idéia mais prática ao invés da ponte agradeço... talvez tenha q abrir outro tópico ai pra não ficar noutro rumo.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Alguém??

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
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

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por marcos.gurupi »

Puxa ninguem consegue usar a funcao erro extendido com xharbour? Eu jah tentei varias vezes eu nao consigo usar, pq nao tem no arq em C
Marcos Roberto
NetService Software
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Retorno Estendido MFD Bemafi32.Dll [PAF Teste 48]

Mensagem por fladimir »

Olha eu tentei fiz diversos testes, fiz até um EXE em Harbour q funciona o retorno extendido e chamava via parametros no EXE em xHarbour AI FUNCIONOU MAS NA VERDADE FOI UMA GAMBIARRA...

Pq não funcionou propriamente em xHarbour e sim em Harbour ai como precisava fazer funcionar em xHarbour eu fiz meu programa xHarbour chamar o EXE do modulozinho q fiz em HARBOUR passando os parametros e capturando o retorno...

Resumindo Não consegui de jeito nenhum fazer funcionar em xHarbour... tentei cerca de 1 semana direto, pesquisei em tudo q é canto além de diversas tentativas....

Não querendo te desanimar eu não consegui, mas talvez vc consiga... se conseguir ficaremos gratos em saber.


[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder