Таймер/секундомер

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Таймер/секундомер

Сообщение D_I_M_A » 03.01.2008 23:14:13

Как юзать сабж в FPC?
D_I_M_A
новенький
 
Сообщения: 27
Зарегистрирован: 21.08.2007 12:42:20

Сообщение Attid » 03.01.2008 23:30:08

его там нету насколько помню, только отдельные компоненты, где-то или тут на форуме или фрипаскаль.орг были
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение v-t-l » 04.01.2008 19:48:44

если имеется в виду компонент TTimer, то он давно в Lazarus на вкладке System
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение Alexander » 04.01.2008 20:08:21

Да, это вопрос, что имел ввиду D_I_M_A
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение D_I_M_A » 04.01.2008 22:59:48

Да, это вопрос, что имел ввиду D_I_M_A

Вопрос: "Как запустить таймер и узнать значения его в момент времени. Ну или тоже про секундомер. Короче, интерфейс функций работы с таймером/секундомером"...
D_I_M_A
новенький
 
Сообщения: 27
Зарегистрирован: 21.08.2007 12:42:20

Сообщение Attid » 05.01.2008 10:45:52

вопрос в разделе Free Pascal Compiler там нет таймера.

"Как запустить таймер и узнать значения его в момент времени. Ну или тоже про секундомер. Короче, интерфейс функций работы с таймером/секундомером"

это вообще никак.
ты можешь узнать сколько времени
Код: Выделить всё
now

запомнить его в переменую, а потом сверятся с ней и получать разницу.
задережку делать через
Код: Выделить всё
sleep(1000)

если делать паролельно, то изучай потоки.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение D_I_M_A » 05.01.2008 12:09:31

вопрос в разделе Free Pascal Compiler там нет таймера.

Цитата:

"Как запустить таймер и узнать значения его в момент времени. Ну или тоже про секундомер. Короче, интерфейс функций работы с таймером/секундомером"

это вообще никак.
ты можешь узнать сколько времени
Код:
now

запомнить его в переменую, а потом сверятся с ней и получать разницу.
задережку делать через
Код:
sleep(1000)


Я так уже делал, даже свой модуль сделал... Блин, неужеле у компьютера нет встроенного таймера????
D_I_M_A
новенький
 
Сообщения: 27
Зарегистрирован: 21.08.2007 12:42:20

Сообщение Padre_Mortius » 05.01.2008 12:30:41

есть еще GetTickCount. но только под M$ Windows. Если не ошибаюсь, то эта функция возвращает количество тиков, котрое прошло с момента загрузки компьютера.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение FedeX » 05.01.2008 13:09:20

MMRESULT timeSetEvent(

UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD dwUser,
UINT fuEvent
);
из модуля MMSYSTEM. Правда эта функция тож создаёт отдельный поток и в нём вызывает функцию lpTimeProc. Доступна только в Windows (ну и ещё в Wine)
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение Максим » 05.01.2008 18:34:06

В FPC 2.2.0 имеется класс TFPThreadedTimerDriver в модуле fptimer.pp. Судя по всему, это как раз то, что нужно.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Alexander » 06.01.2008 00:28:20

D_I_M_A писал(а):Я так уже делал, даже свой модуль сделал... Блин,
неужеле у компьютера нет встроенного таймера????


В компьютере то он есть, но многозадачная ось не даст тебе
им пользоваться напрямую. Программ то ведь много, не только твоя.

Так что функции работы с промежутками времени предоставляет сама
ось. Это уже не ДОС. Кстати, какая у тебя ОС ? И что за задачу
решаешь ?

Функций для этого много и они разные. В одном случае одни, в другом
другие. Некоторые (now) сделаны в FP кроссплатформенными,
некоторые специфичны для ОС. Например, в Вин есть апи функция
GetTickCount, а в Линуксе это совсем другая функция, действие её то
же.

Ещё есть GetLocalTime, GetSystemTime, Sleep,...

Есть таймеры, реализованные через сообщения. ИТД.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение spv » 06.01.2008 22:57:59

Немножко добавлю от себя. GetTickCount (как и TTimer в Дельфи, как и sleep, GetSystemTime)- штука довольно грубая. Он отсчитывает промежутки времени с тиком в 1/18.2 секунды, кажется (т.е., грубо говоря, где-то по 50 мс). Для большинства прикладных задач этого хватает за глаза, а вот если нужно точнее- надо брать справочник по ассемблеру и копать в сторону MMX. Там, кажется, свой таймер, более точный.

Вобщем, если Вы вдруг АСУ пишете- такой таймер не поможет. :)
spv
новенький
 
Сообщения: 71
Зарегистрирован: 26.09.2006 13:57:46
Откуда: Подмосковье

Сообщение e-moe » 07.01.2008 00:09:11

а ММХ то тут при чем?
в ДОСе перепрограммировали один из каналов системного таймера на нужную точность, в современных же ОС часто выходят из частоты проца и счетчика тактов CPU (см. RDTSC)
e-moe
новенький
 
Сообщения: 31
Зарегистрирован: 27.09.2007 17:00:39

Сообщение spv » 07.01.2008 01:00:29

Хм... Ну, если в ДОСе работать только с одной программой- конечно, можно перепрограммировать таймер. А если таких программ несколько?

А частота разве не может меняться? Как-то не интересовался этим вопросом. Но во многих утилитах видел, что она "плавает"...

Я в свое время так и не нашел выхода из этой ситуации- просто использовал таймер и микропроцессор на АЦП, если до него можно было достучаться :)

А в ММХ есть мультимедиа-таймер, который поточнее :)
spv
новенький
 
Сообщения: 71
Зарегистрирован: 26.09.2006 13:57:46
Откуда: Подмосковье

Сообщение bw » 07.01.2008 02:47:42

e-moe, rdtsc, говоришь. А что, если процессор работает не с постоянной частотой? Тогда не получится ориентироваться на rdtsc при расчете времени. В винде есть функции для точной работы со временем (QueryPerformanceFrequency и QueryPerformanceCounter), но я никогда не пользовался. Кажется ничего лучше в этой операционке нет, разве что на уровне ядря есть какие фичи.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 5

Рейтинг@Mail.ru