Есть такая задача: функция открывает 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.
Спасибо.
По образу и подобию: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. Нет, чтобы книгу почитать...
Большое спасибо !!!
Книгу искать долго, а UPS в любой момент может лечь на батарею...