Uso da DLL Daruma com XHarbour
Moderador: Moderadores
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Uso da DLL Daruma com XHarbour
Caro, estou tentando usar a dll da daruma mas sem sucesso. Inclusive o retorno estah vindo em branco. Jah adicionei ao meu projeto o arq. c e o lib gerado apartir da daruma32.dll. Alguem poderia me auxiliar?
Isso tudo no XHARBOUR. Peguei o exemplo em XHARBOUR no site da daruma mas nao tive sucesso.
Marcos Roberto
Isso tudo no XHARBOUR. Peguei o exemplo em XHARBOUR no site da daruma mas nao tive sucesso.
Marcos Roberto
Marcos Roberto
NetService Software
NetService Software
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Re: Uso da DLL Daruma com XHarbour
O exemplo no site da Daruma usa FiveWin e realmente é meio esquisito mesmo.
Mas vamos aos fatos:
Para carregar a DLL eu uso assim:
Para emitir uma Leitura X:
os retornos eu faço da seguinte forma:
Para encerrar com a DLL:
Lembrando que para esta função de retorno funcionar, a chave Status Função no registro do Windows, deve estar setado em 1
Mas vamos aos fatos:
Para carregar a DLL eu uso assim:
Código: Selecionar todos
h1:= LoadLibrary("Daruma32.dll")Código: Selecionar todos
ret:= dllcall(h1,32,"Daruma_FI_LeituraX")Código: Selecionar todos
if ret != 1 .and. !chk_ret()
return .f.
else
return .t.
endifCódigo: Selecionar todos
FreeLibrary(h1)Código: Selecionar todos
Function Chk_Ret
local liga,ack,st1,st2,msg1,msg2,respep
ack:= i2bin(0)
st1:= i2bin(0)
st2:= i2bin(0)
liga:= dllcall(h1,32,"Daruma_FI_RetornoImpressora",ack,st1,st2)
msg1:= bin2i(St1)
msg2:= bin2i(St2)
********************************************************************************
if msg1 >= 128
wvt_messagebox("Fim de Papel","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-128
endif
if msg1 >= 64
return .t. // pouco papel
endif
if msg1 >= 32
wvt_messagebox("Erro no Relogio","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-32
endif
if msg1 >= 16
wvt_messagebox("Impressora em Erro","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-16
endif
if msg1 >= 8
wvt_messagebox("Comando nao iniciado com ESC","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-8
endif
if msg1 >= 4
wvt_messagebox("Comando nao existente","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-4
endif
if msg1 >= 2
wvt_messagebox("Cupom Aberto","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-2
endif
if msg1 >= 1
wvt_messagebox("Numero de Parametros Invalido","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg1 = msg1-1
endif
********************************************************************************
If msg2 >= 128
wvt_messagebox("Tipo de Parâmetro de Comando Inválido","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 128
Endif
If msg2 >= 64
wvt_messagebox("Memória Fiscal Lotada","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 64
Endif
If msg2 >= 32
wvt_messagebox("Erro na Memória RAM","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 32
Endif
If msg2 >= 16
wvt_messagebox("Alíquota Não Programada","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 16
Endif
If msg2 >= 8
wvt_messagebox("Capacidade de Alíquotas Lotada","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 8
Endif
If msg2 >= 4
wvt_messagebox("Cancelamento Não Permitido","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 4
Endif
If msg2 >= 2
wvt_messagebox("CNPJ/IE do Proprietário Não Programado","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 2
Endif
If msg2 >= 1
//wvt_messagebox("Comando Não Executado","RESPOSTA DO ECF "+str(msg1,4),+"-"+str(msg2,4),48)
msg2 = msg2 - 1
Endif
return .f.Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: Uso da DLL Daruma com XHarbour
Obrigado pela resposta. Por gentileza onde eu posso encontrar a documentacao da dll para q eu possa implementar as outras funcoes da impressora ?
Marcos Roberto
Marcos Roberto
Marcos Roberto
NetService Software
NetService Software
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Re: Uso da DLL Daruma com XHarbour
Opa, neste link: http://www.desenvolvedoresdaruma.com.br ... lp_CHM.zip
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
marcos.gurupi
- Usuário Nível 4

- Mensagens: 939
- Registrado em: 06 Jul 2004 11:53
- Localização: Gurupi-TO
Re: Uso da DLL Daruma com XHarbour
Alamino, estou fazendo um teste aqui tentando emitir uma leitura X, lembro q nao tenho ecf daruma conectado ao meu equipamento sendo assim nao teria q me responder alguma coisa. Eh q quando envio o comando para leitura X ela n me retorna nada. Onde eu mudo o status do registro do windows. Pode ser isso.
Marcos Roberto
Marcos Roberto
Marcos Roberto
NetService Software
NetService Software
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Re: Uso da DLL Daruma com XHarbour
Vá em HKEY_LOCAL_MACHINE\SOFTWARE\DARUMA\ECF e ajuste a chave StatusFuncao para 1.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG