[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: QextSerialPort и потоки



pm2 wrote:
Пишу программу, которая должна забирать данные с приборов по последовательному порту (8 цифровых датчиков веса производства HBM, если это важно). Для общения с портом используется QextSerialPort. Чтобы ожидание ответов не тормозило всю программу, создан второй поток (производный от QThread). В нём кроме порта также создаётся QTimer, сигнал от которого собственно и вызывает функции опроса. Оба объекта создаются уже в функции run(), которая, судя по документации, и должна выполняться в отдельном потоке. Заканчивается она вызовом exec(), чтобы сигналы от таймера обрабатывались. И всё было бы нормально, поток когда надо запускается, завершается, но ожидание ответов всё равно тормозит весь процесс. В чём может быть причина, и как это исправить? Попробовал собрать эту же программу под оффтопиком (XP SP2) - там не тормозит, всё чудесно работает. QT 4.3.0 ставил из исходников в /usr/local (если что не так, могу и пересобрать), система - Sarge. Если пройдут вложения - в них исходник этого модуля.


------------------------------------------------------------------------

#include "serial.h"

int port_fd; //int must_stop;
//int f_rx, f_timeout;
//u_int8_t msg1 [100];

[skip]

Я конечно понимаю, что нарываюсь на флейм, но вы попробуйте ради интереса
написать этот фрагмент на Tcl/Tk - там и GUI нарисовать можно и с последовательным
портом работать проще, да и программа будет покороче.



Reply to: