Название: Прога зависает помогите... Отправлено: zoro86 от Апрель 06, 2010, 14:47 Тут такая проблема ...
В общем есть некий класс для работы с купюраприемником, в нем реализован метод типа : Код: bool BillAcceptor::CMD_WORK() ну вроде как в отдельной консоли... у меня все нормально работает.. подключаю класс в главное GUI окно MainWindow... там при вызове данного метода прога зависает... понятно что там цикл похож на бесконечный ;) и все такое... так вот как этот метод запустить из главного окна как бы отдельно... в отдельном типа процессе... или потоке...??? Название: Re: Прога зависает помогите... Отправлено: Friar от Апрель 06, 2010, 14:51 Ну можно для начала поставить в цикл QCoreApplication::processEvents();, тогда будет интерфейс отрисовываться. А лучше сделать в отдельном потоке, смотрите QThread. Наследуетесь от QThread, переопределяете run(), в нем будете получать статус купюрника, а сигналами сообщать основному окну всю необходимую информацию. Ну еще пару слотов для вкл/выкл приема банкнот. И кстати для купюрника можно sleep(который в цикле) поставить и 500, имхо.
Название: Re: Прога зависает помогите... Отправлено: zoro86 от Апрель 06, 2010, 15:13 по поводу sleep-a там по документации от 100 - 200 сказано ставить :-[ ..
в данный момент у меня пока так идет.. Код: class BillAcceptor : public QObject а как там логика будет выглядеть... построения можно по подробнее.. Название: Re: Прога зависает помогите... Отправлено: Friar от Апрель 06, 2010, 15:21 Код: class BillAcceptor : public QThread Код: BillAcceptor *ba = new BillAcceptor(); Название: Re: Прога зависает помогите... Отправлено: whirlwind от Апрель 06, 2010, 18:01 хм, вот это не Qt-way
Код: do Как по-моему, правильно было бы сделать обьект со слотом CMD_POLL() и этот слот дергать таймером(QTimer) Название: Re: Прога зависает помогите... Отправлено: zoro86 от Апрель 07, 2010, 06:11 Спасибо мужики .... буду катать ;)
Название: Re: Прога зависает помогите... Отправлено: Friar от Апрель 07, 2010, 07:49 хм, вот это не Qt-way Код: do Как по-моему, правильно было бы сделать обьект со слотом CMD_POLL() и этот слот дергать таймером(QTimer) Для описаной задачи, все таки лучший вариант QThread, дальше будет проще добавить функционал, просто сам работал с купюрниками! Название: Re: Прога зависает помогите... Отправлено: zoro86 от Апрель 07, 2010, 09:15 Пока пришлось реализовать через QTimer... так как время поджимает... вторую версию надеюсь более грамотно накатаю...
Вот вопросик возник чем отличается QTest::qSleep(200); от вот этой функции... Код: bool BillAcceptor::cmd_sleep(int timer) Название: Re: Прога зависает помогите... Отправлено: SASA от Апрель 07, 2010, 11:48 Вот вопросик возник чем отличается QTest::qSleep(200); от вот этой функции... QTest::qSleep() - функция из библиотеки QTest. И используется для "моделирования" задержек между действиями. И должна использоваться в тестах. Если вы отнаследуетесь от QThread, то станет возможным использовать функцию sleep(). А тормазить главный поток это не есть гуд, ИХМО. Название: Re: Прога зависает помогите... Отправлено: Friar от Апрель 07, 2010, 14:57 Вот вопросик возник чем отличается QTest::qSleep(200); от вот этой функции... QTest::qSleep() - функция из библиотеки QTest. И используется для "моделирования" задержек между действиями. И должна использоваться в тестах. Если вы отнаследуетесь от QThread, то станет возможным использовать функцию sleep(). А тормазить главный поток это не есть гуд, ИХМО. там еще есть wait() которая не будет тормозить, но как говорил выше QThread тут очень кстати. |