6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
QSerialPort in QThread04.08.2015, 14:31. Показов 6504. Ответов 14
Метки нет (Все метки)
Всем привет, никак не могу разобраться с проблемой
Вот класс для работы с ком портом хедер:
0
|
04.08.2015, 14:31 | |
Ответы с готовыми решениями:
14
Qt Gui + QThread + QSerialPort QSerialPort Qserialport QSerialPort в Qt |
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
|
||||||
04.08.2015, 14:37 | 2 | |||||
попробуйте конструктор переписать так:
0
|
6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
|
04.08.2015, 15:01 [ТС] | 3 |
Kurles, То же самое происходит
0
|
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
|
|||||||||||
04.08.2015, 15:10 | 4 | ||||||||||
В общем то странно, должно перекидываться. но открываться не должно
WritePortSettings и OpenPort нужно вызывать из потока, в котором находиться QSerialPort. Сделай их (эти методы)
0
|
6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
|
04.08.2015, 15:14 [ТС] | 5 |
Kurles, Ну он как раз у меня открывается, и передает, readyRead не срабатывает только.
А для чего Q_INVOKABLE, не могу найти ничего в гугле.
0
|
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
|
|
04.08.2015, 15:26 | 6 |
Lex999, у вас во-первых инкапсуляции нет, во-вторых приведения в стиле С. Вам ошибка четко говорит, сто вы создаете детей СериалПорта в потоке, в котором Порт не живет. Я думаю ошибка в openPort который вызывается с главного потока причем сам порт уде живет в другом.
0
|
6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
|
04.08.2015, 15:30 [ТС] | 7 |
Разобрался походу, запускаю роботу с портом в основном потоке, потому и не работают в том что нужно. Напутал немного, работал с классом порта так, будто бы его от QThread наследовал.
0
|
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
|
|
04.08.2015, 16:11 | 8 |
Этот макрос регестрирует метод в метаобъектной системе Qt, после чего его можно вызывать через QMetaObject::invokeMethod. Аналогичного результата можно было достичь, поместив объявление метода в секцию публичных или приватных слотов.
0
|
6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
|
04.08.2015, 16:59 [ТС] | 10 |
Все заработало, открытие порта, запись настроек и передачу подключил через сигналы -> слоты, заодно и разобрался как правильно с moveToThread работать. Большое спасибо всем за помощь.
0
|
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
|
|
04.08.2015, 17:05 | 11 |
0
|
6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
|
04.08.2015, 17:06 [ТС] | 12 |
Kurles, Так как я сделал неправильно?
0
|
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
|
|
04.08.2015, 17:17 | 13 |
0
|
6 / 6 / 1
Регистрация: 18.12.2013
Сообщений: 114
|
||||||
04.08.2015, 17:23 [ТС] | 14 | |||||
0
|
161 / 126 / 30
Регистрация: 30.05.2015
Сообщений: 380
|
||||||
04.08.2015, 17:35 | 15 | |||||
И фиг его знает, удалиться ли btnSerial, так так deleteLater должен отработать в eventLoop'e потокa thrBtn, а он уже завершился. Дебажных сообщений в деструктор добавь, и проверь.
0
|
04.08.2015, 17:35 | |
04.08.2015, 17:35 | |
Помогаю со студенческими работами здесь
15
QSerialPort QSerialPort и readyRead FlowControl в QSerialPort QSerialPort ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |