Название: обработка событий & qapplication Отправлено: demaker от Июнь 07, 2016, 11:19 Есть класс потока в котором создается и запускается таймер.
По таймауту создается событие и кладется в цикл обработки. Обработчик событий описан в главном окне приложения. Код
Я поставил defaultTime = 50 ,т.е таймер срабатывает 20 раз в секунду . В минуту 1200. А на экране у меня через минуту в lcdNumber выводится толко 973-980, т.е события не успевают обрабатываться ??? Название: Re: обработка событий & qapplication Отправлено: _OLEGator_ от Июнь 07, 2016, 17:59 Все тормозится интерфейсом - что непонятного то.
В итоге скорость работы прямо зависит от скорости работы графики. Решение - обновляй данные в интерфейсе реже - раз в секунду например. Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 07, 2016, 19:08 Т.е главный поток обработки событий
не успевает обработатывать сообщения, которые ему посылает другой поток. Ясно :) Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 07, 2016, 21:09 А тогда еще маленький вопрос. :)
Если я останавливаю поток, который записывает сообщения в главный цикл обработки. То главный цикл обработки сообщений должен обработать все сообщения, которые стоят в очереди , правильно? Тогда почему этого происходит? Все равно за минуту 1200 не выводит. По идее поток должен накидать за минуту. ??? Название: Re: обработка событий & qapplication Отправлено: _OLEGator_ от Июнь 07, 2016, 21:16 Нет. Не правильно.
У очереди есть размер - если она переполняется, то часть сообщений может теряться. Название: Re: обработка событий & qapplication Отправлено: Bepec от Июнь 07, 2016, 21:16 Вы уберите все обращения к ui в customEvent.
И обновляйте данные в отдельном слоте, допустим раз в 1 секунду. Название: Re: обработка событий & qapplication Отправлено: Igors от Июнь 08, 2016, 07:39 Зачем нужно было затевать customEvent - хз, достаточно было просто сигнала. Слабо верится что lcdNumber не справляется с перерисовкой за 20 ms (вагон времени). Это легко проверить напр так
Код Потом раскомментировать display и сравнить Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 08:25 Зачем нужно было затевать customEvent - хз, достаточно было просто сигнала. Согасен, что достаточно было сигнала.Или можно было значение счетчика скидывать в отдельную переменную, защищенную мьютексами, и брать значение из нее раз в секунду и обновлять lcdNumber. Просто хотелось попробовать как все это работает. И вопрос, если достаточно сигналов, тогда вообще зачем или в каком случае целесообразно использовать customEvent и кидать сообщения в главный цикл??? Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 08:29 Цитата: Bepec link=topic=30тываться 205.msg222936#msg222936 date=1465323411 Вы уберите все обращения к ui в customEvent. И обновляйте данные в отдельном слоте, допустим раз в 1 секунду. Т.е сообщения успевали бы обрабатываться, если бы ни Ui, правильно? Название: Re: обработка событий & qapplication Отправлено: Igors от Июнь 08, 2016, 08:56 И вопрос, если достаточно сигналов, тогда вообще зачем или в каком случае целесообразно Затрудняюсь привести такой случайиспользовать customEvent и кидать сообщения в главный цикл??? Т.е сообщения успевали бы обрабатываться, если бы ни Ui, правильно? Время проверки этого в отладчике меньше времени написания поста, не говоря уже о достоверности :)Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 09:42 И вопрос, если достаточно сигналов, тогда вообще зачем или в каком случае целесообразно Затрудняюсь привести такой случайиспользовать customEvent и кидать сообщения в главный цикл??? Тогда интересно зачем Шлее описывает в своей книги подобный пример. ??? Так для общего знакомства :) чтобы было. Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 10:06 Зачем нужно было затевать customEvent - хз, достаточно было просто сигнала. Слабо верится что lcdNumber не справляется с перерисовкой за 20 ms (вагон времени). Это легко проверить напр так Код Потом раскомментировать display и сравнить Проверил добавил вывод времени при старте и при значении счетчика 1200 и закоментил вывод значения счетчика на графику. И разница оказалось равной 1минута 15секунд = 75 секунд; :o Так что дело не в Ui похоже или нет ??? Если не в Ui тогда в чем ??? Название: Re: обработка событий & qapplication Отправлено: Igors от Июнь 08, 2016, 10:38 Проверил добавил вывод времени при старте и при значении счетчика 1200 и Впечатление что Вы просто где-то насвистели в коде :) (напр 16 в не 20). Выкладывайте тестовый проектзакоментил вывод значения счетчика на графику. И разница оказалось равной 1минута 15секунд = 75 секунд; :o Так что дело не в Ui похоже или нет ??? Если не в Ui тогда в чем ??? Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 10:59 Вот проект
время таймаута 50мс т.е в секунду таймер срабатывает 20раз, а в минуту соответственно 1200. Название: Re: обработка событий & qapplication Отправлено: Bepec от Июнь 08, 2016, 12:42 :'(
К сожалению у таймера имеется погрешность в +- 15 мс. Т.к. и linux и windows ОС НЕ реального времени. В чём мы можем убедиться просто выведя время срабатывания слота таймера. Это раз. Цитировать Time tymeout = QTime("12:35:28.513") 1 Time tymeout = QTime("12:35:28.576") 2 Time tymeout = QTime("12:35:28.639") 3 Time tymeout = QTime("12:35:28.700") 4 Time tymeout = QTime("12:35:28.763") 5 Time tymeout = QTime("12:35:28.825") Во 2 время обработки event'a выше вызова просто функции. Насколько - хз, тут уже надо смотреть глубже. Т.е. ставя время сработки в 50 мс, будьте готовы ожидать срабатывание в 65 мс + неизвестное время обработки евента. PS если вам нужна такая точность - вы явно выбрали не ту ОС :D Хотя вроде можно достигнуть точности +-1мс, но уже платформозависимыми функциями. (информация не проверенная) Название: Re: обработка событий & qapplication Отправлено: Igors от Июнь 08, 2016, 15:11 Win7: добавьте строку
Код
Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 18:06 Win7: добавьте строку Ум, спасибо.Код
Название: Re: обработка событий & qapplication Отправлено: demaker от Июнь 08, 2016, 18:07 Всем спасибо :)
|