![]() |
|
|
![]()
|
|
| QTrueFalse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
Я делаю программу которая должна принять некое сообщение с ком порта. Сообщение это может быть послано в любой момент. Два дня читаю форум, понял как подключить QExtSerialPort, как использовать примерно. Глянул мельком пример. В примере(который в комплекте с исходниками проекта QExtSerialPort) приём данных с порта повешен на кнопку. Мне такое не подходит, мне надо чтобы сообщение было принято как только оно будет послано на ком порт моим устройством(Ардуина там по усб будет подключено если уж быть точным). Так вот собственно в чём вопрос: КАК работать с QExtSerialPort, причём так, чтобы не опрашивать порт постоянно? Тоесть я представляю себе некую работу по прерыванию - как только на порт чтото приходит, вызывается функция и это "чтото" считывается программой. КАК так сделать то? Или неужели нужно вот этот цикл постоянный который постоянно опрашивает порт, потоки эти (QThread) и тд? Неужели всё так сложно?
Сам я почти новичёк и ещё не работал нискаким внешним оборудованием - посему не очень себе представляю как это всё работает и как лучше всё это реализовать. Буду благодарен за подсказки спецов |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
QTrueFalse, попробуй QSerialDevice. Лучше его брать из исходников на gitorious.org.
|
|||
|
||||
| QTrueFalse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
А, видел тоже гдето советовали её, но не смотрел её "пристально". Она позволяет сделать что-то подобное(что нужно мне), или просто как альтернатива? Давайте тогда я её погуглю и ещё спрошу чего как... А по QExtSerialPort, я так понимаю, без цикла опроса не обойтись, так? :-( |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
QTrueFalse, смысл QIODevice в том, что он не занимается произволом. Поэтому, если тебе нужны данные "в реальном времени", то без отдельного потока никак не обойтись (в нем надо постоянно висеть в waitForReadyRead()). Но можно и без него. Например, через таймер (startTimer/killTimer).
|
|||
|
||||
| kuzulis |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 5.9.2007 Репутация: нет Всего: 1 |
Да, QSerialDevice позволяет. В принципе, в вашем случае никакие потоки не нужны (если использовать эту библиотеку). Она читает данные асинхронно автоматом сама по мере их поступления и эмиттит сигнал readyRead. Вам нужно лишь приконнектить к этому сигналу слот и читать готовые данные и всё! Т.е. в текущей реализации работа и поведение QSerialDevice аналогично во многом QAbstractSocket, поэтому, если чего то будет не хватать, то можно почитать документацию по сокетам в ассистенте. Потоки нужны только если передается постоянно много даннх туда-сюда и GUI заметно тормозится. Хотя, если использовать режим с буферизацией (типа при открытии не использовать флаг Unbuffered) - то торможений быть не должно по идее. Там (на gitorgious.org) я в директорию /test/guiapp залил тестовое GUI приложение для краткого ознакомления с возможностями библиотеки, также имеются и кнсольные примеры + документация на русском тоже есть (хотя, может быть и не полная - но это не важно). Посмотрите, попробуйте и примите решение что вам использовать. PS: Если что - спрашивайте (но чур, только после прочтения документации, примеров и т.п.) . ;) |
|||
|
||||
| QTrueFalse |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
kuzulis, Спасибо
Библиотека конечно отличная - она выглядит именно так, как я себе её представлял, как она должна выглядить |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |