marcelo.rvieira Novato

Registrado: Quarta-Feira, 5 de Fevereiro de 2020 Mensagens: 5
|
Enviada: Sex Fev 14, 2020 3:18 pm Assunto: Ajuda com Thread |
|
|
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. |
|