GARANTIR DESCONTO

Fórum Delay #232334

14/05/2004

0

E ai pessoal td bem??
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

Salvati

Responder

Posts

14/05/2004

Lucas Silva

Tenta usar o comando [b:ebdb5560eb]Sleep[/b:ebdb5560eb]


Responder

Gostei + 0

14/05/2004

Salvati

E ai amigo,
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


Responder

Gostei + 0

15/05/2004

Salvati

e ai qual a diferença entre delay e sleep???
e ai pessoal alguém pode me ajudar ai??


Responder

Gostei + 0

15/05/2004

Emerson Nascimento

a diferença é que delay vc criou, e sleep é uma função do delphi.

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar