Russian Qt Forum
Ноябрь 23, 2024, 04:16
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
QSerial приём данных
Страниц:
1
2
[
3
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QSerial приём данных (Прочитано 12734 раз)
tux
Global Moderator
Бывалый
Offline
Сообщений: 404
Re: QSerial приём данных
«
Ответ #30 :
Ноябрь 08, 2020, 18:42 »
Цитата: paibolit от Ноябрь 08, 2020, 17:10
Заголовочный файл нужен ?
Нет. Догадываюсь, в чём у вас проблема. waitForReadyRead вам нужен тут только для того, чтобы хоть как то отдать время центральному процессору. Тут надо либо по-другому строить архитектуру (чтобы нормально использовать сигналы-слоты) либо в цикле (при ожидании) периодически вызывать QCoreApplication::processEvents.
Ну и, при полном приёме данных (после заполнения буфера полезными данными), лучше взвести какой-нибудь флаг. Либо выпустить сигнал. Хотя тут "на вкус и цвет все фломастеры разные"
Записан
Digital Art
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: QSerial приём данных
«
Ответ #31 :
Ноябрь 08, 2020, 19:26 »
ЛОЛ
ФЭЙСПАЛМ. Я хз нафига я вообще влез в эту тему.
«
Последнее редактирование: Ноябрь 08, 2020, 19:29 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
tux
Global Moderator
Бывалый
Offline
Сообщений: 404
Re: QSerial приём данных
«
Ответ #32 :
Ноябрь 08, 2020, 19:35 »
Цитата: kuzulis от Ноябрь 08, 2020, 19:26
ЛОЛ
ФЭЙСПАЛМ. Я хз нафига я вообще влез в эту тему.
Затем, чтобы написать этот пост. Наверное.
Записан
Digital Art
qate
Супер
Offline
Сообщений: 1177
Re: QSerial приём данных
«
Ответ #33 :
Ноябрь 08, 2020, 19:57 »
Цитата: paibolit от Ноябрь 08, 2020, 17:10
bool SendCom::SendAndRead()
не должна функция делать и запись и чтение, разделяй и переписывай код
и никаких sleep и waitForReadyRead - не нужно
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: QSerial приём данных
«
Ответ #34 :
Ноябрь 08, 2020, 20:19 »
Цитата: paibolit от Ноябрь 08, 2020, 17:10
Заголовочный файл нужен ?
Когда здесь пишут о примере, то имеется в виду минимальный проект, с профайлом и всеми заголовочными, и с main.
И надо внимательно читать ответы и советы. Тем более от автора библиотеки. Это на будущее, если здесь останетесь.
Если опять мимо, то - где цикл событий? Ну, например, QCoreApplication::exec()?
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
paibolit
Новичок
Offline
Сообщений: 10
Re: QSerial приём данных
«
Ответ #35 :
Ноябрь 08, 2020, 21:18 »
Цитата: qate от Ноябрь 08, 2020, 19:57
не должна функция делать и запись и чтение, разделяй и переписывай код
и никаких sleep и waitForReadyRead - не нужно
Поскольку это мой дебют в QT - можно по подробнее: в чем проблема если даю запрос потом пауза и чтение (про GUI не надо рассказывать)
Цитата: tux от Ноябрь 08, 2020, 18:42
Нет. Догадываюсь, в чём у вас проблема. waitForReadyRead вам нужен тут только для того, чтобы хоть как то отдать время центральному процессору. Тут надо либо по-другому строить архитектуру (чтобы нормально использовать сигналы-слоты) либо в цикле (при ожидании) периодически вызывать QCoreApplication::processEvents.
Ну и, при полном приёме данных (после заполнения буфера полезными данными), лучше взвести какой-нибудь флаг. Либо выпустить сигнал. Хотя тут "на вкус и цвет все фломастеры разные"
Может я заблуждаюсь - поправьте, когда данные приходят в COM порт они складываются сначала в буфер винды и выполнение этого процесса никоим образом не касается выполнения QTшного кода, а когда дело у QT доходит до забора данных с буфера COM порта - QT фактически забирает эти данные с памяти (с буфера винды) а не непосредственно с COM порта.
Как бы тема для новичков, но некоторые ответы просто "убивают"
Записан
tux
Global Moderator
Бывалый
Offline
Сообщений: 404
Re: QSerial приём данных
«
Ответ #36 :
Ноябрь 08, 2020, 21:28 »
Цитата: paibolit от Ноябрь 08, 2020, 21:18
Может я заблуждаюсь - поправьте, когда данные приходят в COM порт они складываются сначала в буфер винды и выполнение этого процесса никоим образом не касается выполнения QTшного кода, а когда дело у QT доходит до забора данных с буфера COM порта - QT фактически забирает эти данные с памяти (с буфера винды) а не непосредственно с COM порта.
Складываться то они складываются, но вот сам сигнал пока обработаться не может - все крутится в цикле и внешние события либо не приходят, либо обработаться не могут. QCoreApplication::processEvents ведь не просто так придумали.
Вообще, в GUI лучше ничего долго в функции не крутить, а нормально сделать обработку сигналов/слотов.
Записан
Digital Art
qate
Супер
Offline
Сообщений: 1177
Re: QSerial приём данных
«
Ответ #37 :
Ноябрь 08, 2020, 22:19 »
Цитата: paibolit от Ноябрь 08, 2020, 21:18
Поскольку это мой дебют в QT - можно по подробнее: в чем проблема если даю запрос потом пауза и чтение (про GUI не надо рассказывать)
В обработчике сигнала - никогда не делай паузы:
1. записал и вышел, жди сигнал чтения
2. получил сигнал чтения - вычитал всё и обработал без пауз
какую книгу/статью ты прочитал про сигналы и слоты прежде чем начать писать на qt ?
Записан
paibolit
Новичок
Offline
Сообщений: 10
Re: QSerial приём данных
«
Ответ #38 :
Ноябрь 08, 2020, 23:45 »
Всё!!!!!!!! Кажется дошло !!!!!
Спасибо что вытерпели меня
Пошёл дерзать - о результате отпишусь
Записан
Страниц:
1
2
[
3
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...