Название: Работа таймера Отправлено: DenKor29 от Ноябрь 20, 2014, 11:22 Реализую задержку таким способом версия 5.3.2 (MiniGw) + QCreator
i Код: nt delay; Идиотский вопрос какое максимальное время задержки можно реализовать таким способом ? Как я понимаю 24 часва должны работать. Это число 86400 секунд или 86 400 000 Т.е. int имеет размер 32 бит. Максимальное время 2 147 483 648 (~590 часов) Я прав ??? Название: Re: Работа таймера Отправлено: __Heaven__ от Ноябрь 20, 2014, 12:21 Не совсем хорошо получается с кодом.
Получается, что все 24 часа у вас процессор будет молотить. Лучше воспользоваться концепцией сигналов и слотов. Наверное, будет лучше воспользоваться классом QTimer. К его сигналу QTimer::timeout() прикрутить необходимый слот. Upd: Установить задержку можно сколь угодно большой. Например, пусть таймер срабатывает каждый час, слот из некой переменной размера unsigned long long отнимает 1. Когда эта переменная обнулится - вы достигнете желаемой задержки. Название: Re: Работа таймера Отправлено: Bepec от Ноябрь 20, 2014, 12:24 Максимальное время работы не ограничено при добавлении дополнительных переменных.
++ к __Heaven__. Название: Re: Работа таймера Отправлено: __Heaven__ от Ноябрь 20, 2014, 12:50 Кстати, более читабельна конструкция
Код чем Код
Название: Re: Работа таймера Отправлено: vulko от Ноябрь 20, 2014, 13:36 Недавно буквально гуглил про high resolution таймеры (в qt 5.3 у таймера появлися setprecision() метод кстати). Если не изменяет память, то для очень больших задержек погрешность очень большая.
Так для 1с задержки +- 200мс вполне может быть. График даже был там, и зависимость была больше чем линейная, что-то вроде x^const от длительности задержки. Советую протестировать такую долгую задержку на точность. Название: Re: Работа таймера Отправлено: __Heaven__ от Ноябрь 20, 2014, 13:53 vulko, вы случаем не об этом?
Цитировать enum Qt::TimerType The timer type indicates how accurate a timer can be. Constant Value Description Qt::PreciseTimer 0 Precise timers try to keep millisecond accuracy Qt::CoarseTimer 1 Coarse timers try to keep accuracy within 5% of the desired interval Qt::VeryCoarseTimer 2 Very coarse timers only keep full second accuracy Название: Re: Работа таймера Отправлено: DenKor29 от Ноябрь 20, 2014, 14:26 Не совсем хорошо получается с кодом. Получается, что все 24 часа у вас процессор будет молотить. Лучше воспользоваться концепцией сигналов и слотов. Наверное, будет лучше воспользоваться классом QTimer. К его сигналу QTimer::timeout() прикрутить необходимый слот. Спасибо так и сделаю. Название: Re: Работа таймера Отправлено: vulko от Ноябрь 20, 2014, 15:19 vulko, вы случаем не об этом? Цитировать enum Qt::TimerType The timer type indicates how accurate a timer can be. Constant Value Description Qt::PreciseTimer 0 Precise timers try to keep millisecond accuracy Qt::CoarseTimer 1 Coarse timers try to keep accuracy within 5% of the desired interval Qt::VeryCoarseTimer 2 Very coarse timers only keep full second accuracy угу |