Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QSerialPort несколько соединений


Автор: lemik1986 30.9.2014, 11:00
Всем доброго дня!
Необходим совет как лучше создать несколько соединение с com-портами (8-9 одновременно) с помощью QSerialPort. Данные с каждого com-порта буду собираться и кидаться в базу, т.е. они одновременно будут слать данные. Пока вариант только один: для каждого делать отдельный поток. Может есть друге варианты?

Автор: borisbn 30.9.2014, 11:08
Цитата(lemik1986 @  30.9.2014,  11:00 Найти цитируемый пост)
для каждого делать отдельный поток. 

Зачем ? У QSerialPort есть сигнал readyRead. Вешайся на него одним обработчиком, в котором при помощи sender() можешь выяснить какой именно порт прислал данные.

Автор: math64 30.9.2014, 14:41
У меня для этого дела сделан класс SerialHelper.
Он содержит:
- QSerialPort с которым работает
- буфер в котором накапливаются данные, получаемые в readyRead (они могут приходить по одному байту, а могут большими порциями)
- сигнал, на который можно повесить обработчик получения полной порции данных
- имя таблицы или sql запрос для помещения в базу данных.
Если данных много, лучше делать на нитях, чтобы ГУИ не тормозил.

Но тормозить может база данных. При использовании sqlite нужно делать транзакции:
Код

    db.transaction();
    QSqlQuery q;
    q.exec("insert into ...");
    db.commit();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)