Russian Qt Forum
Ноябрь 24, 2024, 01:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос про 'new QSerialPort(this)'  (Прочитано 3283 раз)
Mike-Aiki
Гость
« : Декабрь 05, 2013, 13:12 »

Установил QSerialPort, Qt 4.8.5.  Объект создаю в конструкторе класса окна, типа:

[h]
QSerialPort* serial;

[cpp]
serial = new QSerialPort(this);
connect(serial ,SIGNAL(readyRead()),this,SLOT(slotReadingSerialData()));

(в порту заглушка, генерю тестовую посылку для проверки приема).
При этом, если компилить отладочную версию, при выполнении при создании объекта выдаётся

"QObject: Cannot create children for a parent that is in a different thread",

при этом сигнал readyRead() не генерится.
  Но, если компилить релиз, то никаких предупреждений не возникает, и вроде как всё работает, т.е. слот отрабатывает.

Тоже самое наблюдаю в поставляемом примере "terminal" - в отладочной версии выдаётся предупреждение, и не работает "эхо", в релизе - всё нормально.

Если создавать 'serial = new QSerialPort', то тоже не генерится сигнал, естественно.

Можно, конечно, создать тред, в котором что-то типа waitForReadyRead() крутить, но просто заинтересовало - это нормально,
что в релизе нет ругани, и всё работает? В своих проектах, если получал такой варнинг, то без соответствующего 'moveToThread()' ничего не работало...  Непонимающий
Записан
Bepec
Гость
« Ответ #1 : Декабрь 05, 2013, 14:33 »

Если вы в разных потоках пытаетесь писать что-то в порт - тогда он выдаст такую фигню и порт завянет.

Если же нет у вас таких ситуаций - просто пересоберите проект.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.168 секунд. Запросов: 20.