Russian Qt Forum

Qt => Вопросы новичков => Тема начата: kruft от Май 07, 2014, 07:09



Название: QT serial
Отправлено: 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());
}



Название: Re: QT serial
Отправлено: Bepec от Май 07, 2014, 09:19
По опыту - Qt всё успевает.
По мнению - в вашем коде где то ошибка.
По приведенному коду - огрызок, не дающий нормального представления :)


Название: Re: QT serial
Отправлено: Mikhail от Май 07, 2014, 21:40
Работает и на 115200 без проблем.

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

После serial->readAll()попробуй еще прочитать из порта. Все найдется.


Название: Re: QT serial
Отправлено: kruft от Май 08, 2014, 08:08
Я просто думал, что ReadyRead() по приходу каждого байта выдается. Понятно в чем проблема, спасибо.