Fórum Delay #232334
14/05/2004
0
Olha queria saber com faço um delay, tenho o código mas naum achei um complemento pra fazer o quero, que seria enviar um protocolo em cada 50 milésimos de segundos.
O Código que consegui segue abaixo:
procedure delay(MSec: cardinal);
var
start: cardinal;
begin
Start:=GetTickCount;
repeat
Application.processMessages;
until (GetTickCount - Start)>=Msec;
end;
===--Exemplo de uso--===
delay(1000);{Aguarda 1 segundo}
delay(5000);{Aguarda 5 segundos}
delay(60000);{Aguarda 60 segundos = 1 minuto}
Mas meu protocolo não está sendo enviando como eu quero, ou melhor, envia o primeiro antes do código do delay e não envia mais nada.
Deve ser por causa da linha ´Application.processMessages;´, mas naum sei por qual substituir pra enviar meu protocolo via porta serial.
Agradeço a atenção
Salvati
Curtir tópico
+ 0Posts
14/05/2004
Lucas Silva
Gostei + 0
14/05/2004
Salvati
bem que eu tentei fazer com o sleep, mas depois do envio do primeiro protocolo meu micro vai receber um protocolo do hardware como resposta, ai depois o micro envia outro protocolo e ai o outro hardware responde e assim por diante.
E com os meus testes vi que durante a execução do sleep ele deixa de receber informação...
Mas será que naum tem outra saída???
Obrigado pela atenção
Gostei + 0
15/05/2004
Salvati
e ai pessoal alguém pode me ajudar ai??
Gostei + 0
15/05/2004
Emerson Nascimento
outra coisa: talvez seu problema se resolva com um Timer.
algo como:
//altere a propriedade Interval para o tempo desejado
procedure TForm.Timer1OnTimer(Sender: TObject);
begin
      Timer1.Enabled := False; // para não ´encavalar´ os processos
      {procedure ou rotina para ENVIAR protocolo}
      Sleep(1000); // aguarda um segundo para depois tentar receber o protocolo resposta
      {procedure ou rotina para RECEBER protocolo}
      Timer1.Enabled := True; // religa o timer
end;
uma outra forma é você utilizar Threads para esse processo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)