wie funktioniert readyRead() Arbeit in der Qt?

Es ist meine erste Frage auf dieser website !

Ich habe einige Probleme beim Lesen von Daten von einem COM-port, sende ich eine vollständige Nachricht von einem anderen COM-port, und wenn ich es mit Qt, es ist immer schneiden Sie in mehrere Teil-messages.

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 !";
    }
}

den Nachrichten gesendet werden, 25 oder 27 Bytes lang, wenn ich mit Putty oder Hyperterminal zu Lesen, ich habe keine Probleme.
Auch wenn ich mit 2 emulierten seriellen port COM zu kommunizieren, habe ich nicht dieses problem...
Es tritt nur bei Qt-lese-system UND mit 2 physikalischen COM-port...

Denke ich, dass ich nicht bekommen, wenn die readyRead signal genau...

Ich bin sehr verwirrt, vielen Dank im Voraus für Eure Hilfe !

Sind Sie Fragen, wie wir konkret umgesetzt wird dieses in QtSerialPort und/oder auch nur die Allgemeine API-Konzept?
Ja, es hat mir sehr geholfen, danke

InformationsquelleAutor palador | 2014-10-28

Schreibe einen Kommentar