URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2610
[ Назад ]

Исходное сообщение
"Как поиметь количество секунд, прошедшее с определенного момента?"

Отправлено BigHarry , 28-Фев-04 12:44 
Есть такая задача: функция открывает COM со шнурком от UPS-а порт и ждет, пока UPS не перейден на батарею (потеря 220). После этого функция возвращает единичку. После этого функция вызывается есчо несколько раз - но если питание на УПС-ине появилось - то возврат из функции не происходит. Нужно как-то определить - скока времени (секунд) прошло между вызовами этой функции. Как это можно сделать? Примерно это выглядит так:
===============================================
counter:= 20;
while 1=1 do begin
  lasttime:= get_curent_time();
  UpsMonFunc();
  curtime = get_curent_time();
  If (curtime - lasttime) <= 10 then counter:= counter - 1
  else counter:= 20;
  
  If counter <= 0 then begin
    Run_Script_For_ShutDown_System_Nah();
    exit;
  end;
end;
===============================================
Только это типа Pascal, а надо на Си - прога работает под FreeBSD.
Спасибо.

Содержание

Сообщения в этом обсуждении
"Как поиметь количество секунд, прошедшее с определенного мом..."
Отправлено XMan , 28-Фев-04 16:52 
По образу и подобию:

int counter=20;
while (1) {
  time_t lasttime=time(NULL);
  UpsMonFunc();
  time_t curtime=time(NULL);
  if ((curtime-lasttime) <= 10) counter--;
  else counter=20;
  if (counter <=0 ) Run_Script_For_ShutDown_System_Nah();
};

Переменную curtime можно вообще выбросить.

PS. Нет, чтобы книгу почитать...


"Как поиметь количество секунд, прошедшее с определенного мом..."
Отправлено BigHarry , 01-Мрт-04 13:54 
Большое спасибо !!!
Книгу искать долго, а UPS в любой момент может лечь на батарею...