Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3433 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde pessoal. Estamos fazendo algumas melhorias no nosso sistema em relação a impressão no ECF.

 

Verificamos que no ECF Sweda ST120 utilizando o protocolo SwedaSTX não retorna corretamente a flag 'PoucoPapel'. Mesmo dando exceção devido a falta de papel em um relatório gerencial, não passou pelo evento 'AcbrEcfErrorSemPapel' e sempre retorna False na flag citada acima.

 

Verificamos no source que a variável 'fsPoucoPapel' é setada na unit 'ACBrECFSwedaSTX.pas':

 if Result and (Tipo = '!') then  // Bloco de Satus não solicitado, Verificando
  begin
     // TODO: Mapear mudanças de estado, que não são erros
     Result := not (Erro in [40,  // Abertura de Movimento
                             74,  // Ejetando a Folha
                             98,  // Processando
                             99,  // Confirme
                             103..105, 109..111,   // Eventos de Cheque
                             127, // Pouco Papel
                             159, // Preenchendo
                             172, // Preenchimento concluido
                             198, // Processando
                             200, // Leitura Mirc
                             207, // Autenticando
                             217, // Preparando Imp.Fita Det
                             220 // Emitindo Red.Z
                             ]);
     if Erro = 217 then
       fsPoucoPapel := True;

      GravaLog('                Alteração de Estado: '+IntToStr(Erro)+'-'+DescreveErro(Erro) ) ;
  end;

    Em debug, não conseguimos localizar o retorno do ECF Sweda Tipo = '!' com Erro = 217 para poder setar pouco papel no ECF.

 

    A princípio pensamos que estivéssemos com um problema no sensor, mas utilizando o Lacrador 02.10.00, só o fato de abrir o programa já acusa pouco papel no ECF.

 

    Estou anexando um log que pode descrever os testes que estávamos realizando com maiores detalhes.

 

   Será que falta algum tipo de configuração no componente? Gostaríamos da opinião de vocês sobre o assunto.

 

   

  • Fundadores
Postado

Aparentemente o ECF retorna de forma diferente como o previsto pelo ACBrECF...

 

é muito difícil debugar isso... ainda mais pelo fato que não tenho uma ST120...

 

O Log não veio em anexo...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

Bom dia pessoal. Estávamos verificando aqui, temos a function:

AcbrEcf.EnviaComando()

Daniel, teria como enviar um comando para a Sweda e depois analisar o sinalizador de pouco papel?

 

Tínhamos efetuado três tratamentos para pouco papel que no momento não estão mais funcionando e estamos buscando uma condição de contorno.

 

Desde já agradecemos.

  • Membros Pro
Postado

Daniel, estou chamando a função dessa maneira:

ecf.AcbrECF.EnviaComando('34');

Na unit 'ACBrSwedaSTX.pas' na linha:

BS1 := Ord(copy(fpRespostaComando,12,1)[1])

Quando o ECF estava normalmente com papel, acusou:

BS1 := 128

Depois avancei o papel até ela ficar em estado de erro, acusou:

BS1 := 192

Na flag 'fsPoucoPapel' ficou como 'False'.

 

No log do ECF em anexo apareceu o seguinte registro:

-- Ativando a porta: COM1
-- 12:32:18:012 EnviaComando( 34 )
                TX -> [STX]?34[ETX][171]
   12:32:31:056 RX <- ACK = 6 Falha: 0
                TimeOut estendido
   12:32:34:112 RX <- (Bloco) = [STX]?34+0000AA[192][129][146][128][128][ETX][235]
                TX -> ACK = 6 Falha: 0
   12:35:02:248 RX <- [STX]?34+0000AA[192][129][146][128][128][ETX][235]
-- Desativando a porta: COM1

Abri o lacrador, acusou sem papel.

LOG-SwedaST120.rar

  • Fundadores
Postado

Sem Papel é uma condição diferente de Pouco Papel...  Qual das duas condições estamos falando ???

 

Quando o ECF acusa SEM PAPEL, há um exception do ACBrECF, e o comando enviado não é precessado...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

No caso, não chega a disparar nenhum exception. Também não passa pelo tratamento:

procedure Tecf.AcbrEcfErrorSemPapel(Sender: TObject);
begin
  statusPapelECF := 'E';
end;
  • Fundadores
Postado

Enviei novas modificações para o ECF, que devem melhorar a detecção...

 

Mas veja... No caso de FIM de Papel, o ECF que é o responsável por acusar o erro no comando enviado... e pelo que testei... isso já estava funcionando adequadamente... 

O ECF retorna essa condição de erro nas Mensagens do protocolo, e não na leitura de Pedido de Status... Ou seja, você não precisa fica lendo o Status antes de cada comando enviado... isso deixará o seu programa muito lento...

 

Com a implementação atual, o ACBrECF deve, detectar a condição de Pouco Papel e de Fim de Papel adequadamente...

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • 3 semanas depois ...
  • Este tópico foi criado há 3433 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.