Analisando o Log apresenta "Tentativa: 1"
19:19:15:187 RX <- :0000000[213][CR][210]
-- 19:19:15:187 LinhaCupomVinculado( ### CREDITADO OU DEBITADO ###[CR][LF][CR][LF][CR][LF] )
Daruma: Falha no Envio do CMD. Tentativa: 1 - Erro: 0 - Estendido: 0 -> Erro não documentado Cod.Aviso: 0
TX -> [FS]F[213] ### CREDITADO OU DEBITADO ###[LF][LF][LF][255][19]
19:19:21:937 RX <- :0000000
----------------- ERRO -----------------
Impressora Daruma não está respondendo
----------------------------------------
Então analisamos a função que envia os comandos a impressora e percebemos que o mesmo está configurado p/ fazer novas tentativas quando ocorre "Erro não documentado = 99", porém o erro zero "0", também é um erro não documentado
Imagino que o Correto deveria ter adicionado ali também a regra " or (fsErro = 0) " para que o comando seja enviado novamente... estou certo?
Function TACBrECFDaruma.EnviaComando_ECF( cmd : AnsiString ) : AnsiString ;
Var Tentativas : Integer ;
begin
{ Nas Darumas com MFD, em algumas situações o ECF pode ficar temporariamente
inoperantente, enquanto a compactação da MFD está sendo efetuada. Nessa
situação, o ECF retorna os seguintes códigos de erro:
35 - Relogio Inoperante ou 99 (não documentado)
Segundo o Suporte Técnico da Daruma, quando este problema ocorre, devemos
aguardar até que ele consiga responder corretamente.
Esta rotina irá tentar enviar o comando por 10 vezes. Caso ela recebe os
erros 35 ou 99... ele aguarda 100 milisegundos e tenta um novo envio... }
Tentativas := 0 ;
while (Tentativas < 10) do // Tenta enviar o comando por 10 vezes
begin
try
Result := EnviaComando_ECF_Daruma( cmd ) ; // Envia o comando
Break ; // Tudo OK, saindo..
except
GravaLog('Daruma: Falha no Envio do CMD. Tentativa: '+IntToStr(Tentativas+1)+
' - Erro: '+IntToStr(fsErro)+' - Estendido: '+IntToStr(fsErroSTD) +
' -> ' + ErroEstendidoTexto(fsErro) +
' Cod.Aviso: '+IntToStr(fsCodAviso) );
if (fsCodAviso = 40) or (fsErro = 35) or (fsErro = 99) then // Está compactando MFD ?
begin
GravaLog(' Tentando novamente');
Sleep(100) ;
end
else
raise ;
end ;
Inc( Tentativas ) ;
end ;
end ;