como o readyRead () funciona no Qt?

É a minha primeira pergunta neste site!

Tenho problemas para ler dados de uma porta COM, envio uma mensagem completa de outra porta COM e, quando a recebo com o Qt, ela é sempre cortada em várias sub-mensagens.

void SerialPortReader::init()
{
    connect(m_serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
}   

void SerialPortReader::readData()
{
//    m_serialPort->waitForReadyRead(200);
    QByteArray byteArray = m_serialPort->readAll();
    qDebug() << byteArray;

    if(byteArray.startsWith(SOF) && byteArray.endsWith(EOF_LS)
        && byteArray.size() >= MIN_SIZE_DATA) {
    decodeData(byteArray.constData());
    } else {
        qDebug() << "LIB SWCom : Unvalid trame !";
    }
}

as mensagens enviadas têm 25 ou 27 bytes de comprimento; se eu usar o Putty ou um Hyperterminal para lê-las, não tenho problemas. Além disso, se eu usar 2 portas seriais emuladas COM para me comunicar, não tenho esse problema ... Isso ocorre apenas com o sistema de leitura Qt E com 2 portas COM físicas ...

Acho que não entendo quando o sinal readyRead é emitido exatamente ...

Estou muito confuso, Agradecemos antecipadamente a sua ajuda!

questionAnswers(3)

yourAnswerToTheQuestion