comment readyRead() travaillent dans Qt?

C'est ma première question sur ce site !

J'ai quelques problèmes de lecture de données à partir d'un port COM, j'ai envoyer un message complet à partir d'un autre port COM, et quand je le reçois avec Qt, c'est toujours coupée en plusieurs submessages.

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

les messages envoyés sont 25 ou 27 Octets de long, si j'utilise du Mastic ou un Hyperterminal pour les lire, je n'ai aucun problème.
Aussi, si j'utilise 2 émulé port série COM pour communiquer, je n'ai pas ce problème...
Il se produit uniquement avec Qt système de lecture ET avec 2 port COM physique...

Je pense que je n'ai pas lorsque le signal readyRead est émis exactement...

Je suis très confuse, je vous Remercie d'avance pour votre aide !

  • Demandez-vous comment nous avons plus particulièrement mis en œuvre dans ce QtSerialPort et/ou juste l'API de concept?
  • Oui, il a beaucoup aidé, merci
InformationsquelleAutor palador | 2014-10-28