[РЕШЕНО] Работа таймеров в параллельном потоке |
Здравствуйте, гость ( Вход | Регистрация )
[РЕШЕНО] Работа таймеров в параллельном потоке |
BRE |
30.11.2009, 17:29
Сообщение
#11
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
AD |
30.11.2009, 17:38
Сообщение
#12
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Блин. Я убрал строку остановки таймера, но в слот все-равно программа не заходит... Что еще может быть не так?
|
|
|
BRE |
30.11.2009, 17:46
Сообщение
#13
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Попробуй такой код:
|
|
|
AD |
30.11.2009, 18:01
Сообщение
#14
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Не попадает....
Так.... попало. Интересно, а такой код приемлем?
|
|
|
Litkevich Yuriy |
30.11.2009, 18:02
Сообщение
#15
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
А я правильно понимаю, что это таймер заканчивает свое действие, как только программа выходит из функции run()? объект таймера будет разрушен по выходу, следовательно от таймера ничего не останется. Только вот метод run() никогда не закончится, а зациклится в методе exec(), также как и функция main() методы exec() в потоке и в приложении делают примерно одно и тоже
|
|
|
BRE |
30.11.2009, 18:05
Сообщение
#16
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Не попадает.... В консоль что нибудь пишет? добавь отладочный вывод:
Проверь, запускается ли нитка и т.д. Так.... попало. Интересно, а такой код приемлем? Нет. Твой цикла будет запущен после выхода из метода exec и таймер уже сигналы отправлять не будет. Ты должен выбрать, или использовать таймер с сигналами и запускать exec, или запускать свой цикл и не использовать таймер. |
|
|
AD |
30.11.2009, 18:07
Сообщение
#17
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ну... я уже ведь сказал, что запускается.... Проблема уже немного в другом: подружить мой цикл и вызов этого таймера... А вот как это сделать?
qDebug() выдает ошибку: Цитата error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'QDebug' (or there is no acceptable conversion) |
|
|
BRE |
30.11.2009, 18:09
Сообщение
#18
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Ну... я уже ведь сказал, что запускается.... А я уже ответ написал. Смотри предыдущий ответ. qDebug() выдает ошибку: Цитата error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'QDebug' (or there is no acceptable conversion) #include <QDebug> Сообщение отредактировал BRE - 30.11.2009, 18:13 |
|
|
AD |
30.11.2009, 18:18
Сообщение
#19
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Мда... Грустно, что нельзя это сделать. Задачка в следующем, которую никак не могу решить:
В этом потоке я отправляю на COM-порт команды, которые принимает прожектор. Ну команды расшифровываются так: повернуть на столько-то вверх, на столько-то вправо, на столько-то вниз, на столько-то влево. Одновременно мне нужно принимать от прожектора команды и анализировать. Ну что оно уже повернул на столько-то. В своем цикле у меня делается следующее:
Имеется счетчик времени. При определенном значении этого счетчика (раз в минуту) запускается функция выдачи команд, которая и занимается отправкой команд: writing functions
Как видно из комментариев есть пара мест, где необходимо проверить значения, что я и пытался реализовать с помощью таймера. Функции чтения выглядят так: reading functions
Если у кого-то возникнут идеи, как это сделать, буду благодарен. Пока никаких других идей не возникает.... Сообщение отредактировал AD - 30.11.2009, 18:23 |
|
|
BRE |
30.11.2009, 18:19
Сообщение
#20
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Или делать такой изврат:
Но я бы рекомендовал решить или согналы и exec, или свой цикл без сигналов. |
|
|
Текстовая версия | Сейчас: 15.1.2025, 22:31 |