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))... У вас используются треды, вот я и думаю, будет ли работать мой вариант без тредов и не будет ли он тормозить сичтему? -- Хочешь быть пилотом- будь им! -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

