O exemplo no site da Daruma usa FiveWin e realmente é meio esquisito mesmo.
Lembrando que para esta função de retorno funcionar, a chave Status Função no registro do Windows, deve estar setado em 1
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.