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

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT serial  (Прочитано 2325 раз)
kruft
Гость
« : Май 07, 2014, 07:09 »

Добрый день,

Пытаюсь получить данные с внешнего микроконтроллера по UART. Данные приходят достоверные (проверял монитором COM порта).
Когда с ПК посылаю байт, а процессор возвращает байт, то всё в порядке. В случае когда необходимо принять последовательно несколько байт с микроконтроллера приходит только один байт вместо 4-х, где-то QT не успевает. Скорость приёма 38400.

Код:
connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));

void MainWindow::readData()
{
    QByteArray message = serial->readAll();
    ui->rec_field->appendPlainText(message.toHex());
}

Записан
Bepec
Гость
« Ответ #1 : Май 07, 2014, 09:19 »

По опыту - Qt всё успевает.
По мнению - в вашем коде где то ошибка.
По приведенному коду - огрызок, не дающий нормального представления Улыбающийся
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #2 : Май 07, 2014, 21:40 »

Работает и на 115200 без проблем.

Сигнал readyRead() выдается только по приходу первой порции данных. Ты их и читаешь.

После serial->readAll()попробуй еще прочитать из порта. Все найдется.
Записан
kruft
Гость
« Ответ #3 : Май 08, 2014, 08:08 »

Я просто думал, что ReadyRead() по приходу каждого байта выдается. Понятно в чем проблема, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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