Russian Qt Forum
Ноябрь 25, 2024, 22:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Вопросы новичков / Подключение Джойстика к QT : Январь 05, 2022, 16:28
Здравствуйте.
Пытаюсь подружить джойстик с QT. Мне нужны только координаты стика(х,у).
Я пытался использовать QGamePad.
Пример я взял отсюда https://code.qt.io/cgit/qt/qtgamepad.git/tree/examples/gamepad/simple?h=5.15
Программа выдает "Did not find any connected gamepads";
Вроде как существует какой-то костыль с созданием окна, а потом его удалением, костыль описан тут - https://bugreports.qt.io/browse/QTBUG-61553, реализовать его у меня не получилось, да и не очень то мне этот метод нравится.

Может быть кто-нибудь имеет опыт прикручивания джойстиков используя QGamePad или может быть какие-нибудь другие инструменты QT?

P.s У меня получилось адекватно снять координаты используя SDL2. Но хотелось бы обойтись без внешних библиотек.

джойстик примерно как на пике.
2  Qt / Вопросы новичков / Re: Подвисает GUI при удерживании мышкой окна : Август 24, 2021, 21:31
И снова спасибо за ответы.
Вычитал у Шлее qapp-> processevents(), хоть он и не рекомендует.
Добавил qapp->processevents() после каждого тика таймера перед тем как отображать в виджеты.
Теперь при перетаскивании подвисает ровно один раз, ~на пол секунды. Буфер не успевает переполнится, пакеты не теряются).
После этой задержки я не отпускаю окно, по размеру вижу что буфер полностью вычитывается все данные отображаются)

Завтра попробую

И там не нужно два объекта в тред сувать. Если твой класс ComPort является враппером над QSP, то достаточно:

1. В QSP установить парентом ComPort в конструкторе
2. Достаточно мувнуть только один ComPort в тред

Гы, а ты проверь шо и таймер не останавливается при кликах (раньше такое было)  Улыбающийся


О результатах отпишусь)
3  Qt / Вопросы новичков / Re: Подвисает GUI при удерживании мышкой окна : Август 23, 2021, 13:04

в конструкторе mainwindow

QThread *thread_NEW = new QThread;
    m_ComPort->moveToThread(thread_NEW); // помещаем класс  в поток
    m_ComPort->getSerialPort()->moveToThread(thread_NEW); //помещаем порт в поток.
    thread_NEW->start();


в созданном потоке считываются данные с ком порта и заполняются поля структуры.

В основном потоке гуя с помощью указателя на стуктуру которую заполняет второй поток.
С помощью Qtimer c частотой 10мс я обновляю виджеты.

id_потока_1 - это поток гуя, который обновляет виджеты.
id_потока_2 - это поток для работы с ком портом, вывожу в дебагер каждый раз когда я делаю readALL();

При захвате окна мышкой(проблема из первого поста, которую я пытаюсь подебить) я вижу, что второй поток прекращает выполняться,
в дебагере выполняется только первый поток. пик(2).

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

после чего потоки начинает выполнятся как мне нужно - могу без проблем перетаскивать окно,
все виджеты обновляются и буфер не переполняется. пик(4);


Прошу помощи, что-то я совсем потерялся.








4  Qt / Вопросы новичков / Re: Подвисает GUI при удерживании мышкой окна : Август 21, 2021, 10:26
Спасибо за ответы.  Попробую для qSerial отдельный поток сделать.
5  Qt / Вопросы новичков / Re: Подвисает GUI при удерживании мышкой окна : Август 21, 2021, 08:15
А происходит все это на венде?
Да
6  Qt / Вопросы новичков / Подвисает GUI при удерживании мышкой окна : Август 21, 2021, 00:02
Доброго времени суток. Используя readyRead и ReadAll() забираю все с com порта. Далее прохожусь парсером и вывожу на виджеты, всего порядка 30 постоянно меняющихся значений. Если я захватываю окно мышкой, мои данные перестают отображаться. В qDebug() я вижу что после отпускания мышкой, буфер куда я делаю readALL() разрастается до 12000(80 при нормальной работе) и я ловлю битый пакет.
После чего вычитывая парсером буфер уменьшается.
Как избежать подвисаний? Начинать читать про потоки? Но на форуме добрая половина тем о том что не нужно использовать потоки вместе qSerialPort.  Шокированный Непонимающий
Страниц: [1]

Страница сгенерирована за 0.109 секунд. Запросов: 24.