Ir para conteúdo
  • Cadastre-se

Recommended Posts

Postado

Bom dia a todos,

Identificado um travamento no TACBrLCB ao utilizar leitor de código de barras pela porta serial 

O timer interno do componente chama "LeSerial", que utilizava "RecvTerminated(200, ...)" ou "RecvPacket(200)". Em cenários com "Application.ProcessMessages", telas modais ou processamento mais demorado de eventos, essa leitura síncrona podia bloquear a thread principal repetidamente, 
causando travamento da interface e impedindo outros dispositivos seriais, como balança, de processarem suas mensagens.

Foi feito uma alteração configurável e retrocompatível no componente
  - Inclusão da propriedade "TimeOutLeitura: Integer", com valor padrão "200", usada nas chamadas a "RecvTerminated" e "RecvPacket".
  - Inclusão da propriedade "BloquearReentrada: Boolean", com valor padrão "False".
  - Quando "BloquearReentrada = True", o componente ignora uma nova chamada de "LeSerial" enquanto uma leitura anterior ainda está em andamento, evitando reentrada pelo processamento de mensagens.
  - O comportamento padrão permanece igual ao anterior, pois "TimeOutLeitura" continua em "200" e "BloquearReentrada" inicia como "False".

Na aplicação afetada, a configuração utilizada foi:

TimeOutLeitura := 0;
BloquearReentrada := True;

Com TimeOutLeitura = 0, a leitura deixa de aguardar na thread principal; com "BloquearReentrada = True", 
evita-se uma segunda leitura concorrente durante a execução da primeira. Após a alteração, o leitor serial, 
a conferência por balança passaram a funcionar normalmente.

segue, prints das alterações e a classe alterada.

Leitor 2.png

Leitor1.png

Leitor3.png

ACBrLCB.pas

Vivalogo.png.71c28db4e1cc66d41716e4cabdcd2abf.png  Dyego Noé                                                      | e-mail: [email protected]
  Analista e Desenvolvedor de Sistemas         | Supervisor de Programação Viva Sistemas

 

 

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.

The popup will be closed in 10 segundos...