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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер 
:(
    Опции темы
Гость_PriZraK
Дата 10.11.2005, 19:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне необходиом, чтобы определенная функция вызывалась каждую секунду. Пожалуйста подскажите как это сделать???
  Вверх
_hunter
Дата 10.11.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



ты угадал. с помощью таймера ( SetTimer() )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
powerfox
Дата 10.11.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



В Страуструпе не нашёл, из какой библиотеки ф-я?


--------------------
user posted image
PM WWW   Вверх
cardinal
Дата 10.11.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(MSDN)
CWnd::SetTimer
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

Return Value

The timer identifier of the new timer if the function is successful. An application passes this value to the KillTimer member function to kill the timer. Nonzero if successful; otherwise 0.

Parameters

nIDEvent

Specifies a nonzero timer identifier.

nElapse

Specifies the time-out value, in milliseconds.

lpfnTimer

Specifies the address of the application-supplied TimerProc callback function that processes the WM_TIMER messages. If this parameter is NULL, the WM_TIMER messages are placed in the application’s message queue and handled by the CWnd object.

Remarks

Installs a system timer. A time-out value is specified, and every time a time-out occurs, the system posts aWM_TIMER message to the installing application’s message queue or passes the message to an application-defined TimerProc callback function.

The lpfnTimer callback function need not be named TimerProc, but it must be defined as follows:

void CALLBACK EXPORT TimerProc(
  HWND hWnd,      // handle of CWnd that called SetTimer
  UINT nMsg,      // WM_TIMER
  UINT nIDEvent  // timer identification
  DWORD dwTime    // system time
);

Timers are a limited global resource; therefore it is important that an application check the value returned by the SetTimer member function to verify that a timer is actually available.





--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Neitron
Дата 11.11.2005, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5




Не факт что у него Visual C++
и уродский MFC.
http://msdn.microsoft.com/library/default....ns/settimer.asp

Это сообщение отредактировал(а) Neitron - 11.11.2005, 10:31


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Любитель
Дата 11.11.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Пишем функцию, которая будет периодически вызываться, вызываем
Код

if (!SetTimer(0,0,miliseconds,lpFunc)) //lpFunc - указатель на нашу функцию 
 // что-то обламалось с таймером;
 //  функция вида (парметры):
VOID CALLBACK TimerProc( HWNd, UINT, UINT_PTR,  DWORD dwTime);

Подробно - MSDN. Функция из WinAPI (#include <windows.h>)


--------------------
PM MAIL ICQ Skype   Вверх
powerfox
Дата 11.11.2005, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



А из STL усть что-нибудь, а то у меня Linux(g++-3.4.1). Мне потом надо будет и под Windows скомпайлить, но не очень скоро.
Может как-то иначе реализовать счётчик времени выполнения приложения(игра Snake, требуется секундомер)?


--------------------
user posted image
PM WWW   Вверх
Neitron
Дата 11.11.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



powerfox
Цикл?



--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Гость_malysh
Дата 12.11.2005, 21:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пишу арканоид на Dev-Сpp. Не знаю как отслеживать время(ну чтобы шарик нормально летал).
  Вверх
Guest
Дата 12.11.2005, 22:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Создовайт цикл, и в цикле смотри текущее время, посмотри в линухе аналог Sleep, или полюбому в никсах должна быть ф-ция таймера.
  Вверх
powerfox
Дата 12.11.2005, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97





--------------------
user posted image
PM WWW   Вверх
powerfox
Дата 17.11.2005, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Не смог разобраться как работает setitmer - где задавать имя вызываемой ф-ии? Может кто покажет пример(hello world c таймером)? smile


--------------------
user posted image
PM WWW   Вверх
Mayk
Дата 17.11.2005, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



powerfox
а может тебе воспользоваться сигналами?

Цитата(alarm)

NAME
      alarm - set an alarm clock for delivery of a signal

SYNOPSIS
      #include <unistd.h>

      unsigned int alarm(unsigned int seconds);

DESCRIPTION
      alarm  arranges  for a SIGALRM signal to be delivered to the process in
      seconds seconds.

      If seconds is zero, no new alarm is scheduled.

      In any event any previously set alarm is cancelled.

RETURN VALUE
      alarm returns the number of  seconds  remaining  until  any  previously
      scheduled alarm was due to be delivered, or zero if there was no previ-
      ously scheduled alarm.


Только афаир alarm со sleep'ом плохо сочетаются
Добавлено @ 21:09
А хотя в принципе один фиг. setitimer тоже sigalrm посылает smile


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Mayk
Дата 17.11.2005, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Вот пример - первый выстрел таймера происходит по alarm'у, другие по setitimer.
Код

#include <unistd.h>
#include <signal.h>
#include <sys/time.h>

void myalarm(int a)
{
        if(a == SIGALRM){
                struct itimerval v1;
                v1.it_interval.tv_sec = 0;
                v1.it_interval.tv_usec = 500000;
                v1.it_value.tv_sec = 0;
                v1.it_value.tv_usec = 1;
                if(setitimer(ITIMER_VIRTUAL, &v1,&v1));
                        perror("setitimer");
        }
        printf("hello world\n");
}

int main()
{
        signal(SIGALRM, myalarm);
        signal(SIGVTALRM, myalarm);
        alarm(1);
        while(1);

}


Это сообщение отредактировал(а) Mayk - 17.11.2005, 21:22


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
powerfox
Дата 17.11.2005, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Не дадите несколько пояснений, что происходит(строки 21-24, 13, 14)


--------------------
user posted image
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.