Ir para conteúdo
  • Cadastre-se

dev botao

ACBRLCB funciona para Leitor USB ou somente Serial


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 2564 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Olá Srs do ACBR, depois de pesquisar muito sobre

a Entrada de Codigos para processamento de Vendas de Itens

num cenario com extrema velocidade,  verifiquei que o ACBR tem um

componente ACBRLCB que cria uma fila dos codigos lidos, e num timer

ou numa thread poderia ir processando esses codigos lidos, sem interferir

na leitura dos mesmos, e com isso , resolvendo a entrada extremamente

rapida dos itens, para a venda. Porém o que nao ficou claro é que se funciona, quando

o leitor é USB ou  ainda quando a entrada for pelo teclado simplesmente. Hoje estou tendo alguns 

problemas com entrada de dados de codigo de barras , onde uso um programa EXCOM.exe,

que pega o que veio da serial e manda para o Edit para ser processado, mas isso se passar muito rapido,

os codigos sao cortados e ainda , o que é mais grave , pega outro produto se o mesmo existir.

Então , somente com uma fila , pode-se resolver essa questão. Já resolvi isso em outras épocas,

num cenário, com muitas ligações telefonicas, (sistema de radio-taxi) , as quais eu gravava literalmente cada uma que chegava em um arquivo,

atraves, da captura por bina,  para serem processadas posteriormente. Naquele caso, precisava gravar literalmente num arquivo, pois as ligações

eram compartilhadas por vários usuários , que iam processando posteriormente.cada ligação....e eliminando do arquivo...

Nesse caso da automação, poderia ser um arquivo temporario, mesmo que vai guardando os codigos, enquanto outra instancia ou

num timer vai processando os mesmos...e eliminando-os

Parece que o componente ACBRLCB, se proproe a fazer isso...preciso de uma ajuda para entender melhor o componente... 

 

  

  • Membros Pro
Postado

Mas a duvida é a seguinte... nao posso usar o ACBrLCB.Fila.Add(CodBarras) para adicionar 

um codigo que veio do codigoedit no evento keypress atraves do teclado ou leitor USB ?

e depois usar ACBRLCB.Lerfila no meu timer para processar o codbarras da fila?

porque a partir do evento keypress do meu codigoedit, nao importa quem colocou o codigo lá, 

se foi o leitor serial, se foi pelo teclado, ou foi pelo leitor USB.

O que quero é o seguinte:

se tiver leitor serial, entao pega o codigo atraves do leitor serial e joga no codigoedit.

se nao tiver leitor serial e for USB, vai emular o teclado e assim jogar no codigoedit

se nao tiver nem leitor serial nem leitor USB, vai pegar pelo teclado e jogar no codigoedit

sendo assim , em qualquer hipose, eu poderia alimentar o componente ACBRLCB.fila.add(trim(codigoedit.text)) e 

ligar o vendeitemtimer para processar ACBRLCB.Lerfila  enquanto ACBRLCB.fila.count > 0,  e limpar o codigoedit e

mandar o foco de volta para o codigoedit e assim continuar lendo o proximo codigoedit

ou seja quero usar somente a fila do componente para armazenar os codigos. depois processar no timer... ou numa thread...

não posso fazer Isso? essa é minha duvida...

 

  • Fundadores
Postado
48 minutos atrás, geanjesus disse:

Mas a duvida é a seguinte... nao posso usar o ACBrLCB.Fila.Add(CodBarras) para adicionar 

Sim... não há problemas com isso... Veja esse (antigo) tópico:

 

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.

  • 2 semanas depois ...
  • Consultores
Postado
Em 08/11/2017 at 10:39, geanjesus disse:

quando tento acessar os links que voce explica no forumweb.... da esse erro

 

Em 08/11/2017 at 12:38, Daniel Simoes disse:

Parece que o Fórumweb morreu...

Vou tentar lembrar o que eu havia escrito no tópico...

Dá pra acessar via WayBackMachine:

https://web.archive.org/web/20120425065621/http://www.forumweb.com.br/foruns/topic/74093-pequenos-problemas-com-acbr/

Em 08/11/2017 at 14:39, Daniel Simoes disse:

Por favor veja os fontes do projeto em:

\ACBr\Exemplos\ACBrSerial\LCBxECF

Também tem o exemplo do Delphi.

"\ACBr\Exemplos\ACBrSerial\ACBrECF\Delphi\uVendaFrenetica.pas"

Acho que não está no exemplo do Lazarus...

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Vale lembrar também que, alguns leitores USB permitem instalar um driver (assim como nas impressoras fiscais) que emula uma porta COM, e torna essa leitura bem eficiente utilizando a fila do ACBrLCB.

Att.

Giuliano Naspolini Ribeiro

Automalog Consultoria e Sistemas Ltda

  • Fundadores
  • Solution
Postado

Obrigado @EMBarbosa

Copiando o conteúdo do antigo FórumWeb, para esse post:

Adicionado 09 outubro 2008 - 11:09

Quote

Componente ACBrECF ocupado
(Aguardando resposta do comando anterior)

Isso significa que o comando anterior ainda não foi concluído e vc já enviou um novo comando... Provavelmente o operador disparou um novo produto antes da Impressão do anterior terminar... Esses problemas geralmente não ocorrem quando usando a DLL do fabricante pq a DLL "prende" a aplicação até ser concluida... diferente do ACBr, que mantem sua interface livre...

Vc precisará implementar um mecanismo de Fila. Ou seja os itens vendidos caem em uma fila (STringList)... e vc ativa um Timer que vai processando e removendo os itens da Fila... Abaixo segue exemplo de Fila usando o componente ACBrLCB (para leitor de Cod.Barras) com a propriedade UsarFila := True

No Edit do Código do Produto faça:
procedure TFrVenda.edCodProdutoKeyPress(Sender: TObject; var Key: Char);
 Var CodBarras: String;
begin
  if (key = #13) or (key = #10) then			 // ENTER (CR) ou LF
  begin
	 CodBarras := Trim( edCodProduto.Text );

	 ACBrLCB1.Fila.Add( CodBarras );
	 edCodProduto.Text := '';					 // Zera o Edit, preparando para uma nova venda rapidamente
	 edCodProduto.SetFocus;
	 
	 TimerVendeItem.Enabled := True;	   // Liga o Timer responsável por efetuar as vendas
  end;
end;

No Evento do Timer que efetua as vendas faça:
procedure TFrVenda.TimerVendeItemTimer(Sender: TObject);
 Var CodBarras : String;
begin
  TimerVendeItem.Enabled := False;
  try
	   // Verifica se o ACBrECF está ocupado, Se estiver não vende, tentará novamente no próximo evento do Timer //
	   // FVendendo é liga no inicio de VendeItem e desligada no Final
	 if not ( FVendendo or ACBrECF1.AguardandoResposta) then		
	 begin
		CodBarras := ACBrLCB1.LerFila;
		VendeItem( CodBarras );
	 end;
  finally
	 TimerVendeItem.Enabled := (ACBrLCB1.Fila.Count > 0);
  end;
end;
Ou seja, ele Desliga o timer, processa um Item da fila e só religa o Timer se houver itens restantes...


Finalmente, no evento OnLeCodigo do ACBrLCB, apenas Ligue o Timer
procedure TFrVenda.ACBrLCB1LeCodigo(Sender: TObject);
begin
   TimerVendeItem.Enabled := True
end;


Na procedure de Venda de Itens (VendeItem) vc deve ligar e desligar o FLAG FVendendo
procedure TFrVenda.VendeItem(CodBarras : String);
begin
  FVendendo  := True;

  try
	 ...... seu código de busca no BD aqui ...
	 // Imprime no ECF //
	 ACBrECF1.VendeItem( ...... );

	 // Grava o Item no BD //

  finally
	 edCodProduto.SetFocus;
	 FVendendo := False;
  end;
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.

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