aguardar o término de uma procedure para continuar o program

Delphi

17/11/2007

Olá pessoal, estou utilizando o componente tcompot para enviar e receber pacotes pela serial do computador. no meu sistema existem várias estações remotas cadastradas no banco de dados. eu tenho que fazer um polling para cada estação remota transmitir seus dados uma a uma estes dados são tratados no meu programa. como faço para somente solicitar dados a próxima estação remota quando os dados da anterior terminarem de ser tratados? Segue um pedaço do código:

ComPort1.Connected:= true;
ComPort1.SetRTS(true);
query1.close;
query1.sql.Clear;
query1.sql.text := ´select End_estacao as Qendereco from Estacao´;
query1.open;
if query1.Eof = true then
ShowMessage(´Não há estações cadastradas´)
else
begin
query1.First;
while not (query1.Eof) do
begin
endereco:= Query1.fieldbyname(´Qendereco´).AsInteger;
tentativas[endereco]:= 0;
transmitePacote(endereco, $ED, $ED);

//o programa só pode executar a próxima instrução (query1.Next;) depois de ter recebido a resposta da estação remota, ou seja, ele tem que ficar parado aqui esperando a resposta e só ir para a próxima instrução depois disso

query1.Next;
end;
end;

o código abaixo é o executado quando chega o pacote na serial:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
ComPort1.ReadStr(protocolo, count);
if length(protocolo) = 6 then
begin
if (ord(protocolo[1]) = $AA) then
if (ord(protocolo[2]) = $E0) then
begin
if (ord(protocolo[6]) = $55) then
begin
atualizaVariavel(ord(protocolo[5]),
ord(protocolo[3]),
ord(protocolo[4]));
end;
end;
end;
end; \\agora ele deve voltar para o comando query1.Next; da primeira rotina mostrada

Alguém pode me ajudar?


Ricardoz

Ricardoz

Curtidas 0
POSTAR