Ir para conteúdo
  • Cadastre-se

dev botao

Buffer de leitura de teclado / Leitura de Código de Barras


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

Recommended Posts

  • Membros Pro

Olá!

Boa tarde!

Ao serem executadas leituras consecutivas de códigos de barra para vendas, como é comum em supermercados;

A cada item que eu uso o método “VendeItem”, eu tenho de aguardar a impressora imprimir para que eu possa passar novamente este item pelo leitor de código de barras...

Isso torna o sistema muito lento para o usuário final...

Em outra aplicação que tenho, (a qual faz a comunicação diretamente com a DLL e a impressora Bematech), Não precisei fazer nenhum tratamento para o próprio Windows armazena o buffer de entrada (seja pelo teclado ou seja pelo leitor de código de barras) e envia o comando para a impressora;

Como vocês contornarão esta situação?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você utiliza o ACBrLCB para ler os códigos? se sim habilitou a fila? ou o leitor não é via serial e sim usb ou junto ao teclado?

o ACBrECF trabalha diferente da DLL, ela trava o sistema

acho que você deveria pesquisar por fila aqui no fórum

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

So pra constar, estou fazendo este processo da seguinte forma:

Cadastrei um item no meu sistema com código "1";

Na tela de venda há um "edit", onde eu informo o código do item, ao ser pressionado "enter" é disparado o evento de venda do item;

Assim sendo eu "teclo" : 1 "enter" 1 "enter" 1 "enter" 1 "enter" 1 "enter" ....

Sei que a impressora demora a processar as vendas, porem apenas o primeiro 1 enter é processado, o restante das entradas de teclado são ignoradas;

Acredito que seja alguma rotina interna do ACBR que limpe este cash;

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não tem nada a haver com o ACBr... Com a DLL do fabricante o comportamento é ligeiramente diferente, pois qual ela está sendo executada, a sua Thread (Main) está suspensa e bloqueada...

Se você não implementar um mecanismo de filas isso nunca funcionará, pois a rotina de Venda de Item será disparada várias vezes de forma concorrente...

Experimente algo mais simples:

ACBrECF1.Device.ProcessMessages := False;

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O ACBrECF1.Device.ProcessMessages faz o ACBrECF chamar internamente Application.ProcessMessages enquanto ele fica esperando a resposta do ECF...

A vantagem deste método, é que a sua interface não fica "congelada", enquanto o ECF não responde...

A desvantagem, é que com a Interface livre para novos cliques e "enters", o usuário consegue disparar chamadas a eventos de forma concorrente...

Desativando o ProcessMessages o ACBrECF se comportará semelhante a uma DLL de fabricante de ECF, ou seja, só devolverá o controle para a sua aplicação, quando ele terminar de trabalhar...

  • 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.

Link para o comentário
Compartilhar em outros sites

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