![]() |
|
![]() ![]() ![]() |
|
Mechatronic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Здравствуйте!
Существует проблема следующего характера: Программа обслуживает подключенное по RS-232 (COM-порт) устройство. Кроме всего прочего функционала она обязана выводить в интерфейс пользователя все, что примет из порта(общение идет в ASCII кодах)- что-то вроде minicom в Линуксе. Данные могут сыпаться огромными пакетами на скорости 115200 бит/с. Сейчас используется компонент QTextBrowser, соединенный с компонентом, обслуживающим порт (находится в отдельном потоке), через слот insertPlainText. Интерфейс "подвисает" при большой плотности входного потока (нанекоторых компьютерах сразу, как вQTextBrowser появляется полоса прокрутки). Подскажите, пожалуйста, как выполнить отображение правильно. Думается, раз всякие minicom'ы не виснут, есть надежда и у нас. Спасибо за внимание. |
|||
|
||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Mechatronic, попробуй не напрямую к слоту insertPlainText привязаться, а сделай свой слот следующим образом:
Детальнее тут: http://doc.qt.nokia.com/stable/qwidget.htm...tesEnabled-prop -------------------- Дорогу осилит идущий |
|||
|
||||
Mechatronic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Спасибо за попытку, но не спасло, к сожалению. На пару секунд дольше держится теперь интерфейс и все равно виснет. Если отрубать от текстового буфера хвост и делать setPlainText() каждый раз, то не увисает. Это при условии, что хвост помещается в браузер без прокрутки. Но к сожалению,желательно иметь всю историю в визуальном доступе, ну или хотя бы более приличный размер "хвоста" как в том же minicom'e.
Может другие варианты есть? Это сообщение отредактировал(а) Mechatronic - 1.11.2011, 06:54 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Редактировать надо? Если нет, можно попробовать использовать список (с разделением модель-вид)
При использовании редактора добавлять текст, когда наберётся целая строка (набираемая строка выводится в отдельном виджете внизу от редактора) |
|||
|
||||
Mechatronic |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 28.3.2010 Репутация: нет Всего: нет |
Список? QListView имеете ввиду? Есть основания полагать, что он отобразит быстрее?
Редактировать полученный текст не надо, в главном потоке его нужно только отображать, дополнять по мере прихода новых символов из порта. Это сообщение отредактировал(а) Mechatronic - 1.11.2011, 08:10 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
есть, т.к. он отображает только то, что в данный момент находится на экране. и ещё: если ты говоришь, что тормозить начинает при прокрутке, то м.б. у тебя не установлены драйвера на видео ? ааа... ещё: чтобы ограничить кол-во строк в QTextEdit'е сделай
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Я тоже считаю что QListView (c убранной решёткой и отключенным редактированием) + QStandartItemModel - идеальный выход в данной ситуации - быстро (по производительности) и кода писать минимум =)
-------------------- Дорогу осилит идущий |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, 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. |