Форум: "Начинающим";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизКраеведы , подскажите как сделать независимый таймер? Найти похожие ветки
← →
JTAG (2005-11-14 13:03) [0]Задача такая вращаюсь в цикле принимаю данные с порта если нет данных в течении 1s вывалиаюсь по тайм ауту.
Пытался сделать так, конфигурирую компонент таймер на закладке system стандартной панели компонентов. Через каждые 50ms происходит событие и прибавляется единичка к переменной
Обработчик события выглядит так.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
curcount:=curcount+1;
end;
Процедура приема данных выглядит так :
function readsymbol(l:integer):byte;
var ret:integer;
label exitwhile;
begin
ret:=-1;
form1.timer1.interval:=50;
form1.timer1.Enabled:=true; запускаю таймер
curcount:=0;
while (ret<0) do
begin
ret := sio_getch(1); // Принимаю данные
form1.Memo1.Lines.Append("ret ="+Inttostr(ret)+" ");
form1.Memo1.Lines.Append("curcount ="+Inttostr(curcount)+" ");
sleep(10);
if(curcount>20) then //Если данных нет 1s вываливаюсь из цикла
begin
showmessage ("Data transfer error!");
form1.timer1.enabled:=false;
goto exitwhile;
end;
end;
Проблема в том что пока работает цикл таймер не считает, похоже что он не явлеется независимым процессом.
Как бы сделать чтобы он считал независимо от основного процесса? Или я не тот таймер взял.
← →
Leonid Troyanovsky © (2005-11-14 13:42) [1]
> JTAG (14.11.05 13:03)
> Проблема в том что пока работает цикл таймер не считает
RTFM: Application.ProcessMessages
--
Regards, LVT.
← →
Erik1 © (2005-11-14 14:48) [2]Если принимаеш данные из порта, то лучше установить timeout и производить обработку в отдельном потоке.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c