ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ajuda com Thread

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
marcelo.rvieira
Novato
Novato


Registrado: Quarta-Feira, 5 de Fevereiro de 2020
Mensagens: 5

MensagemEnviada: Sex Fev 14, 2020 3:18 pm    Assunto: Ajuda com Thread Responder com Citação

Olá pessoal, preciso de uma ajuda, montei um projeto que integra com a catraca Fit da TopData, até aí tudo bem, através dos exemplos consegui fazer a integração, comunicar com a catraca a através do clique no botão liberar a mesma, e é aqui que estou tendo problemas, quando a catraca está conectada ela fica num loop o tempo todo da procedure abaixo, procedure esta que está em uma unit declarada no meu projeto e fica verificando conexão, ping, etc. Quando clico com mouse no botão para liberar a catraca ok, faz a liberação, acontece que tenho que liberar através do enter dado pelo leitor de cartão magnético, o associado passa o cartão e o código dele vem para o edit e depois da o enter, o botão está como default para receber o enter, o problema é que enquanto a catraca está conectada e fazendo o loop, não deixa passar para o enter dado através do leitor. Andei dando uma estudada sobre Thread mas estou meio perdido, talvez alguém tenha outra solução que possa me ajudar. Segue abaixo o código para exemplificar melhor. Talvez a solução seria declarar a procedure MaquinaEstados dentro de uma Thread, mas realmente estou perdido sobre como fazer.

procedure TEasyInnerControllerOnline.MaquinaEstados;
var
index: integer;
InnerAtual: TInner;
begin
// Enquanto a variável de controle da maquina de ESTADOs estiver false..
while (not Parar) do
begin
for index := 0 to ListaInners.Count - 1 do
Begin
InnerAtual := ListaInners.Items[index];
// Realiza Um Switch do ESTADO Atual do Inner..
CASE InnerAtual.EstadoAtual OF

aqui fica fazendo a verificações

end;
Sleep(1);
end;
end;
// Fecha a porta de Comunicação quando sai da maquina de estados..
FecharPortaComunicacao();
end;

E preciso passar para código abaixo para liberar catraca, porém fica parado na rotina acima.

if ibqAssociadoSTATUS.Value = 'ATIVO' then
begin
btnEntrada.OnClick(Self);
end;

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB