Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT] Работа с QExtSerialPort - опрос COM порта 
:(
    Опции темы
QTrueFalse
Дата 26.1.2011, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Я делаю программу которая должна принять некое сообщение с ком порта. Сообщение это может быть послано в любой момент. Два дня читаю форум, понял как подключить QExtSerialPort, как использовать примерно. Глянул мельком пример. В примере(который в комплекте с исходниками проекта QExtSerialPort) приём данных с порта повешен на кнопку. Мне такое не подходит, мне надо чтобы сообщение было принято как только оно будет послано на ком порт моим устройством(Ардуина там по усб будет подключено если уж быть точным). Так вот собственно в чём вопрос: КАК работать с QExtSerialPort, причём так, чтобы не опрашивать порт постоянно? Тоесть я представляю себе некую работу по прерыванию - как только на порт чтото приходит, вызывается функция и это "чтото" считывается программой. КАК так сделать то? Или неужели нужно вот этот цикл постоянный который постоянно опрашивает порт, потоки эти (QThread) и тд? Неужели всё так сложно?
Сам я почти новичёк и ещё не работал нискаким внешним оборудованием - посему не очень себе представляю как это всё работает и как лучше всё это реализовать. Буду благодарен за подсказки спецов smile
PM MAIL   Вверх
bsa
Дата 26.1.2011, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



QTrueFalse, попробуй QSerialDevice. Лучше его брать из исходников на gitorious.org.
PM   Вверх
QTrueFalse
Дата 26.1.2011, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Цитата(bsa @ 26.1.2011,  21:56)
QTrueFalse, попробуй QSerialDevice. Лучше его брать из исходников на gitorious.org.

А, видел тоже гдето советовали её, но не смотрел её "пристально". Она позволяет сделать что-то подобное(что нужно мне), или просто как альтернатива?
Давайте тогда я её погуглю и ещё спрошу чего как...
А по QExtSerialPort, я так понимаю, без цикла опроса не обойтись, так? :-(
PM MAIL   Вверх
bsa
Дата 27.1.2011, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



QTrueFalse, смысл QIODevice в том, что он не занимается произволом. Поэтому, если тебе нужны данные "в реальном времени", то без отдельного потока никак не обойтись (в нем надо постоянно висеть в waitForReadyRead()). Но можно и без него. Например, через таймер (startTimer/killTimer).
PM   Вверх
kuzulis
Дата 27.1.2011, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Цитата

А, видел тоже гдето советовали её, но не смотрел её "пристально". Она позволяет сделать что-то подобное(что нужно мне), или просто как альтернатива?

Да, QSerialDevice позволяет. В принципе, в вашем случае никакие потоки не нужны (если использовать эту библиотеку). Она читает данные асинхронно автоматом сама по мере их поступления и эмиттит сигнал readyRead. Вам нужно лишь приконнектить к этому сигналу слот и читать готовые данные и всё!

Т.е. в текущей реализации работа и поведение QSerialDevice  аналогично во многом QAbstractSocket, поэтому, если чего то будет не хватать, то можно почитать документацию по сокетам в ассистенте. 

Потоки нужны только если передается постоянно много даннх туда-сюда и GUI заметно тормозится. Хотя, если использовать режим с буферизацией (типа при открытии не использовать флаг Unbuffered) - то торможений быть не должно по идее.

Там (на gitorgious.org) я в директорию /test/guiapp залил тестовое GUI приложение для краткого ознакомления с возможностями библиотеки, также имеются и кнсольные примеры + документация на русском тоже есть (хотя, может быть и не полная - но это не важно).

Посмотрите, попробуйте и примите решение что вам использовать. 

PS: Если что - спрашивайте (но чур, только после прочтения документации, примеров и т.п.) . ;) 
PM MAIL   Вверх
QTrueFalse
Дата 29.1.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



kuzulis, Спасибо smile Прочёл документацию, редми, разобрался с примерами - вроде всё понятно smile "Выбрал" в качестве "примера" AnySlave, в честь него и назвал класс обрабатывающий сообщения в проекте) Применил в свой проект - покачто всё работает отлично и вродебы вопросов пока нет, но если что - я спрошу smile "Тормоза" пока не могу проверить, там дальше будет видно, но пока всё без потоков и тд - и всё шустро.
Библиотека конечно отличная - она выглядит именно так, как я себе её представлял, как она должна выглядить smile Класс smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.