Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
1

Терминал не работает, но собирается без ошибок

16.10.2019, 22:54. Показов 2573. Ответов 41

Author24 — интернет-сервис помощи студентам
Всем привет!
Пришлось переустановить Qt.

Проект работал без проблем, никаких нареканий, но открыл после переустановки и собирается без ошибок и предупреждений, интерфейс загружается, но не работает функционал.
При нажатии на шаблонную команду, отправляется 1 пакет и все на этом. Дальше кнопки ничего не отправляют.

Приёмная часть вообще молчит и ничего не принимает.

Установлен минимальный пакет Qt

Проект скинул на github

Помогите разобраться, что не так стало.
Миниатюры
Терминал не работает, но собирается без ошибок  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2019, 22:54
Ответы с готовыми решениями:

восстановление без ошибок, пол сайта не работает
уже 3 день палю нервы с этой недо системой. проблема в следующем. 1 делаю бекап на сайте...

Генеологическое древо. Программа без ошибок но работает не правильно
using System; using System.Collections.Generic; using System.Text; class Person { ...

Без использования typedef все работает. При добавлении typedef — более 100 ошибок
Есть программа, с описанием структуры и функций, работающими с ней. Без использования typedef все...

stm32f4 makefile собирается но не работает
Решить собрать православный проект, да вот беда - не запускаеться! Делал по этой инструкции...

41
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 00:51 2
mcmega, какая версия Qt была до этого? В отладчике ловил проблему ?
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 06:16  [ТС] 3
В том то и дело что не помнь.
В отладчике вообще пусто, никаких проблем.
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 08:59 4
Цитата Сообщение от mcmega Посмотреть сообщение
При нажатии на шаблонную команду
- что имеется в виду?

Цитата Сообщение от mcmega Посмотреть сообщение
отправляется 1 пакет
что и через что отправляется ? Куда?

Цитата Сообщение от mcmega Посмотреть сообщение
Дальше кнопки ничего не отправляют.
что за кнопки ?

Цитата Сообщение от mcmega Посмотреть сообщение
В отладчике вообще пусто
в отладчике нужно шагать по программе, зная, что должно произойти, и анализируя то, что происходит на самом деле. Потом разбираться, что поломалось


(проект ещё не смотрел)
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 12:11  [ТС] 5
Проект не сложный, но у меня не получается, нехватает знаний.

Суть этой программы простая:
- есть поля ввода и вывода
- есть кнопки, на которые привязаны готовые последовательности символов

При запуске программы, открывается окошко, выбирается СОМ порт с параметрами

Кнопки нужны, чтоб не печатать команды, а сразу отослать пакет в USB-UART преобразователь
Есть еще поле ввода, в которое можно писать произвольные символы и отправлять.
Миниатюры
Терминал не работает, но собирается без ошибок  
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 12:21 6
Цитата Сообщение от mcmega Посмотреть сообщение
СОМ порт
вот тут есть один момент. Когда я переходил с Qt4 на Qt5, точно была разница при работе. Сейчас глянул - вроде при вызове некоторых функций порт должен быть открыт, иначе поток крашился

тут схематически я перечислил эти функции
if(m_COMPORT.isOpen())
{
m_COMPORT.close
m_COMPORT.read
m_COMPORT.write
m_COMPORT.waitForReadyRead
m_COMPORT.waitForBytesWritten
m_COMPORT.bytesAvailable
}
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 12:23  [ТС] 7
Так у меня вроде
void MainWindow::writeData()
прописана как функция и вызывается по надобности.

Или что то не так понимаю?
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 12:29 8
mcmega, ставь точку останова на

serial_1->write(output);

и в отладку. Смотри, что именно отправляется, какие ошибки возникают в объекте порта
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 12:59  [ТС] 9
В отладке все Ок вроде, по итогу символы нередается в переменную output.
Не понимаю что не работает...
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 13:04 10
что там вообще за колдовство с текстом. Может, в этом дело

так попробуй
C++ (Qt)
1
2
    QByteArray output=ui->input->text().toUtf8();
    serial_1->write(output);
на крайняк вот так. Если и так ничего не принимается на той стороне, то я уж не знаю
C++ (Qt)
1
2
    QByteArray output="1234";
    serial_1->write(output);
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 17:21  [ТС] 11
В общем попробовал я эти варианты, они работают, но только 1 раз.
Меняю код на этот:
C++ (Qt)
1
2
QByteArray output="1234";
serial_1->write(output);
на выходе имею 1234, но только 1 раз, при очередном вызове функции ничего не происходит.
Ошибок тоже нет.

Убираю код выше и пробую передать строку из поля ввода "1234"
На выходе получаю 1234, но тоже только 1 раз, потом ничего не отправляется.
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 18:15 12
Цитата Сообщение от mcmega Посмотреть сообщение
на выходе имею 1234
на выходе - понятно, а на приёмной стороне приходит?

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

Ещё пробуй смотреть, какая ошибка была error()
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 18:25  [ТС] 13
Приходит только первый вызов, дальше что не пытаюсь слать ничего не выходит.
Если отключиться от порта и заново подключиться, то снова первая команда отправляется, а следующие нет.
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 18:29 14
а так?
C++ (Qt)
1
2
3
4
5
6
while(1)
{
QByteArray output="1234";
serial_1->write(output);
serial_1->waitForBytesWritten(100);
}
только запускай на отладку, а то приложение превратится в кирпич ))

У меня подозрение, что ты прибиваешь порт где-то снаружи этой функции.

Также попробуй полный ребилд - рекомендуется делать при упорном, долгим, непонятном поведении программы
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 18:52  [ТС] 15
Попробовал поставить в конце
C++
1
2
serial_1->write(output);
serial_1->waitForBytesWritten(100);
все заработало! Теперь все отправляется и на другой стороне принимается.

Осталось разобраться, почему не принимается на этой стороне, хотя команды посылаю.

Упращенная функция приема (с ней сейчас работаю)
C++
1
2
3
4
5
6
7
8
9
void MainWindow::readData()
{
    QByteArray data_1 = serial_1->readAll();
    foreach (QChar c, data_1)
    {
        ui->console_1->insertPlainText(c);
        ui->console_1->moveCursor(QTextCursor::End);
    }
}
Поставил точку останова отладчика на
C++
1
QByteArray data_1 = serial_1->readAll();
так даже туда не заходит
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 20:26 16
mcmega, ну, по аналогии напрашивается вызов где-нибудь в таймере waitForReadyRead

Но что за фокусы такие - я не в курсе. Я обычно с портом работаю в полностью отдельном потоке, сигналами не пользуюсь для порта
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 21:25  [ТС] 17
А есть какой то набросок проекта как это делается? Может мне тоже без сигналов есть смысл делать.
Заодно проверить в чем глюк.
0
фрилансер
5498 / 5094 / 1047
Регистрация: 11.10.2019
Сообщений: 13,341
17.10.2019, 21:42 18
mcmega, waitForReadyRead попробовал уже ?

Завтра скину, только тебе проект перекраивать придётся. Лучше разберись с тем, что есть
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
17.10.2019, 21:44  [ТС] 19
Пробовал, не помогает. Фигня какая то...
В СБ еще попробую на другом компе, там Qt старый, посмотрю в чем разница.
0
2 / 1 / 0
Регистрация: 21.12.2016
Сообщений: 35
20.10.2019, 16:38  [ТС] 20
Алексей1153, Глянул я разницу, у меня 4 Qt стоит на другом компе, поэтому и все работает...
На 5 версии никак не получается запустить.
0
20.10.2019, 16:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2019, 16:38
Помогаю со студенческими работами здесь

Собирается в minGW, не работает в Visual
Здравствуйте! Есть программа по склеиванию слов, которая работает на minGW, но не хочет работать...

Проблемы с вводом в терминал без графической оболочки
Здравствуйте, проблема: терминал запрашивает логин и пароль, после ввода логина все этапы ввода...

Программа через терминал запускается, а без терминала вылетает
Добрый день, в чем проблема. Есть программа скомпиленная под linux и написанная на Unity. Если...

Установка Qt и QtCreator через терминал, не работает 'help'
Поставил QtCreator через терминал, не пашет 'help') Добавлено через 40 секунд Поищу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru