Re: QextSerialPort и потоки
On Tue, Jul 17, 2007 at 08:44:13AM +0300, pm2 wrote:
> Пишу программу, которая должна забирать
> данные с приборов по последовательному
> порту (8 цифровых датчиков веса
> производства HBM, если это важно). Для
> общения с портом используется QextSerialPort.
> Чтобы ожидание ответов не тормозило всю
> программу, создан второй поток
> (производный от QThread). В нём кроме порта
> также создаётся QTimer, сигнал от которого
> собственно и вызывает функции опроса.
> Оба объекта создаются уже в функции run(),
> которая, судя по документации, и должна
> выполняться в отдельном потоке.
> Заканчивается она вызовом exec(), чтобы
> сигналы от таймера обрабатывались. И всё
> было бы нормально, поток когда надо
> запускается, завершается, но ожидание
> ответов всё равно тормозит весь процесс.
> В чём может быть причина, и как это
> исправить? Попробовал собрать эту же
> программу под оффтопиком (XP SP2) - там не
> тормозит, всё чудесно работает. QT 4.3.0
> ставил из исходников в /usr/local (если что не
> так, могу и пересобрать), система - Sarge.
> Если пройдут вложения - в них исходник
> этого модуля.
Здравствуйте!
Передо мной стоит почти такая же задача. Опыта программирования у меня
нет, вот пытаюсь разобраться как делать. Я хочу в цикле отрашивать
открытые com порты через select(system call). Если что-то пришло, то
прочитать и снова в цикл. Ожидание чтения с порта хочу побороть
установкой флага FNDELAY на на открытый дескриптор порта:
(fcntl(fd, F_SETFL, FNDELAY))...
У вас используются треды, вот я и думаю, будет ли работать мой
вариант без тредов и не будет ли он тормозить сичтему?
--
Хочешь быть пилотом- будь им!
Reply to: