Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Moderadores
Postado

Fiz uma alteração no metodo de Status do ECF da classe da bematech.

Quando o ECF esta desligado e ACBr faz uma solicitação de status na classe da bematech era passado um time-out de 4 segundos,

em caso de erro ela entrava em mais duas tentativas com os mesmos 4 segundo que nesse caso somados seriam 12 segundos.

Um exemplo: No meio da venda o ECF é desligado e ligado em seguida o tempo minimo de retorno seria de 12 segundos ou mais.

Na alteração proposta esse tempo cai para no máximo 400 ou 500 milissegundos.

Vou tentar fazer nas outras classes, por isso alterei a ACBrECF.pas, ACBrECFClass.pas e ACBrECFBematech.pas.

Dessa forma uso assim:

Antes de vender um item eu chamo o função criada "Status" que o retorno é muito mais rápido do ECF ligado do que esperar um retorno de VendeItem 12s. em caso de desligado no minimo.

Fiz uma outra alteração na classe da Bematech que foi incluir o evento OnexecuteCat52, esse tambem podemos incluir nas outras classes das outras ECFs;

Uma outra alteração na unit da NaoFiscal.

Segue anexo as units.

Waldir Paim.

ACBrECF.pas

ACBrECFClass.pas

ACBrECFBematech.pas

ACBrECFNaoFiscal.pas

  • Fundadores
Postado

Algumas perguntas:

Em ACBrECFNaoFiscal.pas... Por que precisamos proteger o método "Reset" em uma exceção muda ? Se ele falhar, o arquivo não será aberto, certo ? ou seja, o restante do código não funcionaria

A chamada aos eventos criados para a CAT52 deveria ser aplicada em ACBrECF.pas, e não em cada classe filha...

A propriedade Status não existiria em todos ECFs, na maioria o Status é enviado na composição do Frame do protocolo...

Se a ideia é agilizar o tempo TimeOut...porque não reduzir o mesmo ? Isso poderia ser feito dentro da classe da Bematech... tente mudar em:



try
{ espera ACK chegar na Porta por 4s }
try
fsACK := fpDevice.Serial.RecvByte( 4000 ) ; except
end ; [/code]

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.

  • Moderadores
Postado

Oi Daniel,

Em ACBrECFNaoFiscal.pas... Por que precisamos proteger o método "Reset" em uma exceção muda ? Se ele falhar, o arquivo não será aberto, certo ? ou seja, o restante do código não funcionaria

Nesse caso poderia inserir um exception (traduzindo o erro apresentado);

A chamada aos eventos criados para a CAT52 deveria ser aplicada em ACBrECF.pas, e não em cada classe filha...

Não, o loop ocorre nas classes filhas;

A propriedade Status não existiria em todos ECFs, na maioria o Status é enviado na composição do Frame do protocolo...

Se a ideia é agilizar o tempo TimeOut...porque não reduzir o mesmo ? Isso poderia ser feito dentro da classe da Bematech... tente mudar em:

Ok, o problema ocorre por que a função EmLinha não funciona corretamente, com o ECF desligado e chamado a função em linha ela retorna True, teria que retornar False porem

nesse caso poderíamos pedir um status ao ECF que se ligado responde no caso da bematech muito rápido;

A sugestão de mudar para mudar de 500 a 1000 milissegundos poderia amenizar um pouco.

Waldir.

  • Fundadores
Postado

Em ACBrECFNaoFiscal.pas... Por que precisamos proteger o método "Reset" em uma exceção muda ? Se ele falhar, o arquivo não será aberto, certo ? ou seja, o restante do código não funcionaria

Nesse caso poderia inserir um exception (traduzindo o erro apresentado);

Acho que fica bom...

A chamada aos eventos criados para a CAT52 deveria ser aplicada em ACBrECF.pas, e não em cada classe filha...

Não, o loop ocorre nas classes filhas;

Mas o evento precisa ocorrer a cada Loop ?

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.

  • Moderadores
Postado

Sim Daniel, num período mais longo de emissão do CAT52 normalmente 30 dias,

a tela fica sem atualização, dessa forma podemos mostrar o dia que esta gerando.

Waldir.

  • Este tópico foi criado há 4420 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.